java - 如何修复在 Jboss 域模式下部署应用程序对数据库的重复插入?

标签 java mysql sql database jboss

我正在使用默认设置在域模式下运行 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/

相关文章:

java - 安装成功后Omnet++ 5.4.1在Ubuntu 18.10上运行错误

SQL - 创建月份第一天和月份名称的临时表或 CTE

mysql - 如何在 Laravel 中组合四个查询?

mysql - 如何更正我的存储过程

Php脚本运行正常,但没有在数据库中创建表

java - 如何修复 "FAILURE: Build failed with an exception.- Could not determine java version from ' 11.0.1'

Java OCR 没有产生任何输出

Java异常抛出内省(introspection)

mysql - 多删除不起作用

MySQL:列数与第 1 行的值数不匹配