由于外键约束尝试创建表而导致SQL异常
我尝试使用以下脚本创建一组表:由于外键约束尝试创建表而导致SQL异常,sql,foreign-keys,constraints,hsqldb,sqlexception,Sql,Foreign Keys,Constraints,Hsqldb,Sqlexception,我尝试使用以下脚本创建一组表: DROP TABLE ORDERS IF EXISTS; DROP TABLE INVOICE IF EXISTS; CREATE TABLE ORDERS( ORDER_ID BIGINT NOT NULL PRIMARY KEY IDENTITY, ... INVOICE_ID BIGINT, ... ); CREATE TABLE INVOICE( INVOICE_ID BIGINT NOT NULL PRI
DROP TABLE ORDERS IF EXISTS;
DROP TABLE INVOICE IF EXISTS;
CREATE TABLE ORDERS(
ORDER_ID BIGINT NOT NULL PRIMARY KEY IDENTITY,
...
INVOICE_ID BIGINT,
...
);
CREATE TABLE INVOICE(
INVOICE_ID BIGINT NOT NULL PRIMARY KEY IDENTITY,
...
ORDER_ID BIGINT,
...
FOREIGN KEY(ORDER_ID) REFERENCES ORDERS(ORDER_ID)
);
ALTER TABLE ORDERS ADD FOREIGN KEY(INVOICE_ID) REFERENCES INVOICE(INVOICE_ID);
这会导致sql异常
java.sql.SQLException:被外键约束引用:
语句中的PUBLIC.INVOICE.SYS_FK_10079[如果需要,则删除表订单]
存在]
我不知道如何解决这个问题..我需要ORDERS表中的invoiceId和INVOICE表中的OrderID作为外键..这就是为什么我使用ALTER table语句..尽管如此,它似乎是错误的。。
顺便说一句,我正在使用hsqldb
我想知道如何正确执行此操作。欢迎提供任何帮助。首先在订单上输入外键:
ALTER TABLE ORDERS DROP FOREIGN KEY(INVOICE_ID) REFERENCES INVOICE(INVOICE_ID);
然后运行您的命令。我建议将您的构造函数放在Create Table语句中以提高可读性。将外键INVOICE\u ID引用INVOICE INVOICE\u ID放在Create\u Table ORDERS中会导致INVOICE\u ID not found错误消息对于某些测试表,这对我来说运行得非常好,有您的信息。。。您确定FK或PK上没有任何可以将其设置为NULL的约束吗?我尝试过[sql]执行失败:ALTER TABLE ORDERS DROP FOREIGN KEYINVOICE\u ID REFERENCES INVOICE\u ID BUILD Failed java.sql.SQLException:用户缺少权限或找不到对象:FOREIGN