由于外键约束尝试创建表而导致的SQL异常

时间:2011-07-20 06:41:53

标签: 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 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:由FOREIGN KEY约束引用:   声明中的PUBLIC.INVOICE.SYS_FK_10079 [DROP TABLE ORDERS IF   EXISTS]

我无法弄清楚如何解决这个问题。我需要在ORDERS表中的invoiceId和INVOICE表中的OrderID作为外键。这就是我使用ALTER TABLE语句的原因。但是,似乎错了.. (顺便说一句,我使用的是hsqldb)

我想知道如何正确地做到这一点。欢迎任何帮助..

1 个答案:

答案 0 :(得分:0)

首先在订单上删除外键:

ALTER TABLE ORDERS DROP FOREIGN KEY(INVOICE_ID) REFERENCES INVOICE(INVOICE_ID);

然后运行你的命令。