如何在MySQL中为级联DELETE设置外键约束?
How to set up foreign key constraint in MySQL for cascading DELETE?
搜索过,但现在比开始时更加困惑。我有 2 个表,AlertsTable
和 AlertRecipientsTable
。
我想添加一个级联删除,表示当 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
中没有任何条目
搜索过,但现在比开始时更加困惑。我有 2 个表,AlertsTable
和 AlertRecipientsTable
。
我想添加一个级联删除,表示当 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