我有以下表格:SQL ALTER TABLE ON DELETE CASCADE
CREATE TABLE BOOK_AUTHORS
(Book_id CHAR(20) NOT NULL,
AuthorName VARCHAR(30) NOT NULL,
PRIMARY KEY (Book_id, AuthorName),
FOREIGN KEY (Book_id) REFERENCES BOOK (Book_id));
CREATE TABLE BOOK_COPIES
(Book_id CHAR(20) NOT NULL,
Branch_id CHAR(20) NOT NULL,
No_of_copies NUMBER,
PRIMARY KEY (Book_id, Branch_id),
FOREIGN KEY (Book_id) REFERENCES BOOK (Book_id),
FOREIGN KEY (Branch_id) REFERENCES LIBRARY_BRANCH (Branch_id));
我想ON DELETE CASCADE
约束添加到他们两个:
我第一次尝试它说,它的工作。这个文件看起来像:
ALTER TABLE "BOOK_AUTHORS"
ADD CONSTRAINT "fk_test"
FOREIGN KEY ("Book_id")
REFERENCES "BOOK" ("Book_id")
ON DELETE CASCADE;
然后我去通过,并在第二个表由两个独立的表的两个外键:
ALTER TABLE "BOOK_COPIES"
ADD CONSTRAINT "fk_test1"
FOREIGN KEY ("Book_id")
REFERENCES "BOOK" ("Book_id")
ON DELETE CASCADE;
ALTER TABLE "BOOK_COPIES"
ADD CONSTRAINT "fk_test2"
FOREIGN KEY ("Branch_id")
REFERENCES "LIBRARY_BRANCH" ("Branch_id")
ON DELETE CASCADE;
然而,在这样做,我得到了错误
“Book_id” 无效的标识符
然后
“Branch_id” 无效的标识符
我不知道我做错了什么。然后,我又回去做了第一个更改表(我原本以为工作的那个),它给了我同样的错误信息("Book_id" invalid identifier
)。有人可以帮我添加这些限制吗?我还有其他五个表来添加这些约束。
确表'LIBRARY_BRANCH'有字段'Branch_id'? –
是的,这是我的LIBRARY_BRANCH表 CREATE TABLE LIBRARY_BRANCH (Branch_id CHAR(20)NOT NULL, Branch_name VARCHAR(50), 地址VARCHAR(100), PRIMARY KEY(Branch_id)); – Anon1234567890
你是如何制作副本的?也许副本已经设置了外键? –