gpt4 book ai didi

php - 外键防止删除mysql中的数据

转载 作者:太空宇宙 更新时间:2023-11-03 11:59:38 25 4
gpt4 key购买 nike

我正在为我的 php 项目设计一个图书馆网站。

无论如何,我有三个表,名为booksuserssavebook

book 有以下列:"bookid", "title","author""genre”和“summary”。

users 有以下列 useridusernamepasswordname.

用户可以收藏书籍,保存的书籍保存在savebook表中,bookiduserid列为外键到表 bookusers

我为此使用了以下查询:

ALTER TABLE savebook
ADD CONSTRAINT bkid_usid
FOREIGN KEY (bookid)
REFERENCES books (bookid);

ALTER TABLE savebook
ADD CONSTRAINT usid_bkid
FOREIGN KEY (userid)
REFERENCES users(userid);

现在的问题是每当我尝试使用查询从表 book 中删除一本书

DELETE FROM books
WHERE bookid=1;

我收到这条消息:

1451 - Cannot delete or update a parent row: a foreign key constraint fails (booklibrary.savebook, CONSTRAINT bkid_usid FOREIGN KEY (bookid) REFERENCES books (bookid))

如何从表 book 中删除一本书,同时删除表 savebook 中的相关行?

最佳答案

要获得您描述的行为,您可以指定

ON DELETE CASCADE

作为外键定义的一部分。

引用:http://dev.mysql.com/doc/refman/5.5/en/create-table-foreign-keys.html

如果您要修改外键约束 bkid_usid(在 booksave 表上),那么您显示的删除语句

DELETE FROM books WHERE ...

会导致 MySQL 删除 booksave 中的行,这些行具有引用从 books 中删除的行的外键值。

关于php - 外键防止删除mysql中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30106571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com