Исключение SQL из-за ограничения внешнего ключа при попытке создания таблиц - PullRequest
0 голосов
/ 20 июля 2011

Я пытался создать набор таблиц, используя следующий сценарий:

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]

Я не мог понять, как решить эту проблему. Мне нужен invoiceId в таблице ORDERS и OrderID в таблице INVOICE как иностранныйключи .. Вот почему я использовал инструкцию ALTER TABLE .. Тем не менее, это кажется неправильным .. (кстати, я использую hsqldb)

Я хотел бы знать, как это сделать правильно...

1 Ответ

0 голосов
/ 20 июля 2011

Сначала сбросьте внешний ключ на заказах:

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

Затем выполните ваши команды.

...