如何在mysql中设置外键约束进行级联删除?

xqnpmsa8  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(434)

搜索过了,但当我开始的时候更困惑了。我有两张table, AlertsTable 以及 AlertRecipientsTable .
我想添加一个级联删除,表示 AlertRecipientID 已删除(此人已被删除),我希望它自动删除中的所有记录 AlertsTable 已经移除的 AlertRecipientID . AlertRecipientID 是两个表中的字段。我仍然希望保持创建警报收件人的能力,而不必为该收件人设置警报记录。
我对如何在mysql中设置这个约束感到困惑。我已经确认我所有的表都配置为innodb和am,使用的是mysql版本5.6.36-cll-lve。
例子:
警报稳定:

AlertID AlertType   AlertName   AlertUserID AlertRecipientID AlertDateTimeAdded
1       1           Test        1           56               2018-01-07 14:29:39

警报接收器稳定:

AlertRecipientID   AlertRecipientUserID    AlertRecipientFirstName AlertRecipientLastName
 56                 1                       John                    Doe

当我删除 John Doe
RecipientID 56 ,我希望它删除 AlertsTable 命名 Test .

lnlaulya

lnlaulya1#

https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html

ALTER TABLE AlertsTable
ADD FOREIGN KEY (AlertRecipientID)
REFERENCES AlertRecipientsTable (AlertRecipientID)
ON UPDATE CASCADE ON DELETE CASCADE;

这应该像你在文章中描述的那样有效。外键约束已启用 AlertsTable 这意味着该表中不能存在具有 AlertRecipientID 不存在于 AlertRecipientsTable ,但您可以在该表中自由设置没有任何项的收件人 AlertsTable

相关问题