check和外键有什么区别?

Gig*_*aPr 9 sql oracle

我对FOREIGN KEY和CHECK约束之间的区别感到很困惑 - 在我看来它们实现了相同的结果.

我的意思是我可以创建一个表并在另一个表上强制执行外键,但我可以创建一个CHECK来确保另一个表中的值.

有什么区别以及何时使用这一个或另一个?

Adr*_*der 7

FOREIGN KEY约束确保条目已存在

编辑 另一张桌子

根据正确的评论存在于另一个表...或同一个表中. - 马克拜尔斯

CHECK约束确保条目遵循某些规则.

检查约束

CHECK约束通过限制列接受的值来强制域完整性.它们类似于FOREIGN KEY约束,因为它们控制放入列中的值.区别在于它们如何确定哪些值有效:FOREIGN KEY约束从另一个表获取有效值的列表,而CHECK约束从不基于另一列中的数据的逻辑表达式确定有效值.

  • 存在于另一个表...或同一个表中. (4认同)