我有一个带有2个外键的表,它引用另一个表中的同一个字段。我知道如果至少有两个外键中的一个被删除,如何定义外键约束来删除我的表项。但是,如果至少有一个外键仍然存在,我想保留表项?
CREATE TABLE PrivateMessages
...
INDEX(FromEmail, ToEmail),
FOREIGN KEY(FromEmail, ToEmail)
REFERENCES Users(Email, Email)
ON UPDATE CASCADE
ON DELETE CASCADE,
...
该表存储两个用户之间的消息。如果两个用户不再存在,我想删除邮件。也许,有没有更好的方法来实现这个目标?
答案 0 :(得分:1)
...如果至少有一个外键仍然存在,我想保留表项
如果两个用户不再存在,我想删除邮件。
仅通过定义约束无法实现。
可能的程序:
marked_for_delete bit not null default 0
列功能。fromEmail
和toEmail
的组合
标记为删除,然后执行delete
语句
父表和子组合将根据您的要求删除
条件匹配。