我正在使用默认设置在域模式下运行 Jboss,并将 war 部署到 main-server-group
并且默认情况下部署到两台服务器 server-one,server-两个
。
我想将服务器端运行的应用程序中的数据插入数据库,但由于它在两台服务器上运行,我得到了对数据库的重复插入,我使用的是 MySQL。
由于同时在两台服务器上部署,我无法检查它是否已经插入到数据库中。
是否有查询允许我在插入 MySQL 之前进行检查?
或者也许我可以获取正在运行的服务器 (服务器一或服务器二)
并仅当它在 服务器一
中运行时插入到数据库中,但我如何进入运行该应用程序的服务器?
最佳答案
仅当行不存在时才INSERT
,您可以使用类似于以下内容的内容(可能需要针对 mySQL 进行调整,我没有实例):
INSERT INTO Registrar (name) (SELECT name
FROM (VALUES ('NEW'), ('EXISTING')) as tmp(name)
WHERE NOT EXISTS (SELECT '1'
FROM Registrar
WHERE Registrar.name = tmp.name))
(工作 SQL Fiddle example - 请注意这是针对 PostgreSQL 运行的,因为 mySQL 窗口不允许 INSERT
)。
如果要INSERT
生成VALUES
语句的行太多,请将它们粘贴到临时(断开连接时清理)表中,然后使用该引用而不是VALUES
引用。
不管怎样,我还是有点怀疑你想做什么...
关于java - 如何修复在 Jboss 域模式下部署应用程序对数据库的重复插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13317384/