我想知道外键声明可以被其等价的检查约束所取代。。如果是,为什么?我试着用谷歌搜索,但找不到答案请给我忠告。。。
这取决于替换的含义。
在概念级别上,可以将外键约束大致视为一组有效值。而且,在概念级别上,您可以将等效的检查约束视为大致一组有效值。
如果这是all,您的意思是替换的,那么您可以用等效的检查约束替换外键约束。
但是,外键约束的有效值集可以使用SQLDML:SQL插入、更新、删除语句进行更改。等效检查约束的有效值集不能以这种方式更改。您必须使用SQL DDL来更改检查约束。
此外,不同的用户可能对外键约束的引用表具有不同的权限。有些可能只有插入权限,有些可能有插入和更新权限,等等。你不能用这种方式控制对检查约束的更改。允许更改检查约束的用户可以以任何方式更改它。
是的,您可以用check
约束替换foreign key
,但请记住使用枚举