首页 文章

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

提问于
浏览
0

我试图使用以下脚本创建一组表:

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

    首先在订单上删除外键:

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

    然后运行您的命令 .

相关问题