如何在MySQL中为级联DELETE设置外键约束?

How to set up foreign key constraint in MySQL for cascading DELETE?

搜索过,但现在比开始时更加困惑。我有 2 个表,AlertsTableAlertRecipientsTable

我想添加一个级联删除,表示当 AlertRecipientID 被删除(该人已被删除)时,我希望它自动删除 AlertsTable 中的所有记录已删除 AlertRecipientID

AlertRecipientID 是两个表中的一个字段。我仍然想保持创建警报收件人的能力,而不必为该收件人设置警报记录。

我对如何在 MySQL 中设置此约束感到困惑。已确认我所有的表都配置为 InnoDB 并且正在使用 MySQL 版本 5.6.36-cll-lve.

示例:

警报表:

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

AlertRecipientsTable:

 AlertRecipientID   AlertRecipientUserID    AlertRecipientFirstName AlertRecipientLastName
 56                 1                       John                    Doe

当我用 RecipientID 56 删除 John Doe 时,我希望它删除 AlertsTable 中名为 Test 的条目。

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;

这应该会像您在 post 中描述的那样工作。外键约束在 AlertsTable 上,这意味着 table 中不能存在记录,而 AlertRecipientID 中不存在 AlertRecipientsTable,但您可以自由地在其中包含收件人table AlertsTable

中没有任何条目