HSQLDB:REPLACE INTO table 抛出 org.hsqldb.HsqlException:违反完整性约束:
HSQLDB: REPLACE INTO table throws org.hsqldb.HsqlException: integrity constraint violation:
我在我的 javafx 应用程序上使用 HSQLDB,
我已经设置了
sql.syntax_mys=true
当重复字段是 PRIMARY KEY 或单个 UNIQUE INDEXED FIELD 时,REPLACE INTO 工作正常。
当重复值是多列 UNIQUE INDEX 的一部分而不是替换行时,问题就出现了,它引发了完整性约束冲突:
CREATE UNIQUE INDEX table_unique_index ON table (COLUMN1, COLUMN2, COLUMN3);
REPLACE INTO table (COLUMN1, COLUMN2, COLUMN3, COL4, COL5) VALUES ('VAL1', 'VAL2', 'VAL3', 4, 5, 6);
REPLACE INTO table (COLUMN1, COLUMN2, COLUMN3, COL4, COL5) VALUES ('VAL1', 'VAL2', 'VAL3', 3, 6, 3);
java.sql.SQLIntegrityConstraintViolationException: integrity constraint violation: unique constraint or index violation: FEE_STRUCTURE_0
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.execute(Unknown Source)
at org.snowbit.databases.HSQLDB.execute(HSQLDB.java:142)
at org.snowbit.databases.HSQLDB.execute(HSQLDB.java:137)
我已经在寻找解决方案或寻找有类似问题的人并找到了 none.. 请提前帮助谢谢。
在多列上创建唯一约束,而不是创建唯一索引。您可以在 MySQL 和 HSQLDB 中执行此操作。
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (COLUMN1, COLUMN2, COLUMN3);
我在我的 javafx 应用程序上使用 HSQLDB, 我已经设置了
sql.syntax_mys=true
当重复字段是 PRIMARY KEY 或单个 UNIQUE INDEXED FIELD 时,REPLACE INTO 工作正常。
当重复值是多列 UNIQUE INDEX 的一部分而不是替换行时,问题就出现了,它引发了完整性约束冲突:
CREATE UNIQUE INDEX table_unique_index ON table (COLUMN1, COLUMN2, COLUMN3);
REPLACE INTO table (COLUMN1, COLUMN2, COLUMN3, COL4, COL5) VALUES ('VAL1', 'VAL2', 'VAL3', 4, 5, 6);
REPLACE INTO table (COLUMN1, COLUMN2, COLUMN3, COL4, COL5) VALUES ('VAL1', 'VAL2', 'VAL3', 3, 6, 3);
java.sql.SQLIntegrityConstraintViolationException: integrity constraint violation: unique constraint or index violation: FEE_STRUCTURE_0
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.execute(Unknown Source)
at org.snowbit.databases.HSQLDB.execute(HSQLDB.java:142)
at org.snowbit.databases.HSQLDB.execute(HSQLDB.java:137)
我已经在寻找解决方案或寻找有类似问题的人并找到了 none.. 请提前帮助谢谢。
在多列上创建唯一约束,而不是创建唯一索引。您可以在 MySQL 和 HSQLDB 中执行此操作。
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (COLUMN1, COLUMN2, COLUMN3);