我正在尝试找出关系和删除选项。
我有两个表,User
和 UserStaff
,从 User
到 UserStaff
的关系是 1:n (一个用户可以有多个员工)。
当我的 User
被删除时,我想删除与该 User
关联的所有 UserStaff
表。当我的 UserStaff
被删除时,我不希望 User
发生任何事情。我知道这是一种级联关系,但我不确定是哪种方式。
即我是在 UserStaff
表中选择现有的外键并使其级联,还是在 User
中创建一个新的外键并将其设置为级联?
最佳答案
是的,这是可能的。您应该在 UserStaff 表中创建 FK。这样:
用户表
CREATE TABLE `User` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
用户人员表
CREATE TABLE `UserStaff` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`UserId` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`Id`),
KEY `UserId` (`UserId`),
CONSTRAINT `UserStaff_ibfk_1`
FOREIGN KEY (`UserId`)
REFERENCES `User` (`Id`)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
关于MySQL外键删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8333302/