gpt4 book ai didi

mysql - 带外键约束的sql删除

转载 作者:行者123 更新时间:2023-11-29 03:53:58 25 4
gpt4 key购买 nike

我有三张表,其中一张是关系表,例如:

People 表有主键:peopleid
Pet 有主键:petid;
Own表有两个外键:peopleidpetid,它们共同作为Own表的主键/p>

现在
我正在尝试从给定 peopleid 的 Table People 中删除一个人,同时,应删除此人拥有的宠物,以及表 Own

请说明一下,提前致谢!

编辑: 我的问题是如何编写 sql 来实现这一点。

最佳答案

我想你需要的是ON DELETE CASCADE
如果删除主键行,则可以使用它自动删除所有表引用。

在您的情况下,如果您使用 peopleid 删除一个人,它将自动从 Own 表中删除引用。

示例 SQL 语句

CREATE TABLE Own (
peopleid int(11) NOT NULL,
KEY peopleid (peopleid),
FOREIGN KEY (peopleid)
REFERENCES People (peopleid)
ON DELETE CASCADE
) ENGINE=InnoDB;

由于pet 表没有people 表的外键,所以需要定义一个触发器,当people 条目被删除时自动删除pet 条目。

CREATE TRIGGER pet_delete AFTER DELETE on own
FOR EACH ROW
BEGIN
DELETE FROM Pet
WHERE Pet.petid = old.petid;
END

定义级联规则和触发器后,如果执行:

DELETE FROM People WHERE peopleid = 3  

它会自动删除 own 表中 peopleid = 3 的条目和 Pet 表中相应的 petid .

查看此链接了解更多详情。
http://www.mysqltutorial.org/mysql-on-delete-cascade/
MySQL Trigger: Delete From Table AFTER DELETE

关于mysql - 带外键约束的sql删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25819719/

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