13

我有一个user作为userID主键的表。我还有另一张桌子叫Friends. 在Friends表中,我有两个用户作为由列表示的朋友,UserID并且FrndID两者都UserID应该FrndIDuserIDin table user

我想强制执行数据完整性。我可以使用这样的东西吗?

ADD CONSTRAINT `ufd_users_fk` FOREIGN KEY (`userId`, `friendId`)
REFERENCES `users` (`userId`, `userId`) ON DELETE CASCADE ON UPDATE CASCADE;

我想知道REFERENCES用户(userId ,userId)是否正确引用了一个列?我没有创建 2 个单独的约束的原因是两个用户都必须存在于 table 中user

4

1 回答 1

14

不,您应该创建两个外键:

ADD CONSTRAINT `ufd_users_fk` FOREIGN KEY (`userId`) 
  REFERENCES `users` (`userId`) 
  ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `ufd_users_fk` FOREIGN KEY (`friendId`) 
  REFERENCES `users` (`userId`) 
  ON DELETE CASCADE ON UPDATE CASCADE;
于 2013-09-17T00:50:18.097 回答