Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在MS SQL Server 2012中允许外键为空值?_Sql Server - Fatal编程技术网

Sql server 如何在MS SQL Server 2012中允许外键为空值?

Sql server 如何在MS SQL Server 2012中允许外键为空值?,sql-server,Sql Server,如何在MS SQL Server 2012中允许外键列上存在null(空)值并保持引用完整性? 我在子表中的外键上创建了约束。它阻止删除父表中的主键记录,并且可以。但它不允许我将新记录添加(插入)到子表中,使外键列为空。在我的应用程序中,我有很多这样的情况,我希望有可能将FK列保留为空,并且仍然保持引用完整性,至少从父表中删除。如何实现这一点 您需要在DELETE set NULL上设置。这样,您就可以在该列中插入空值。此外,您的字段应该允许空值,为什么不使用伪FK,例如-100?空值不是空值。

如何在MS SQL Server 2012中允许外键列上存在null(空)值并保持引用完整性?
我在子表中的外键上创建了约束。它阻止删除父表中的主键记录,并且可以。但它不允许我将新记录添加(插入)到子表中,使外键列为空。在我的应用程序中,我有很多这样的情况,我希望有可能将FK列保留为空,并且仍然保持引用完整性,至少从父表中删除。如何实现这一点

您需要在DELETE set NULL上设置
。这样,您就可以在该列中插入空值。此外,您的字段应该允许空值,为什么不使用伪FK,例如-100?

空值不是空值。空值可以引用另一个表中的某些内容,但空值不能引用任何内容,因为它表示没有可引用的内容。因此,允许null值决不会保留引用完整性。

只允许FKB字段为null值。请确保外键列允许null,并且该值为null,而不是空字符串。这将允许在引用表中插入没有相关行的数据。您能显示表DDL吗?FK中应为空列@litelite具有正确的响应,您只需要允许该列为null。我猜是DDL表定义为不允许空值。FK上的引用完整性只意味着正在使用的ID(如果使用了)必须存在于父表中。但是,如果NULL是存储在FK中的值,则应该可以。我对子表中FK列的表定义有“允许NULL”,并且如果我不在该字段中选择某个值(我从picklist中选择),仍然无法将新记录插入子表中!这可能是因为我的数据输入表单在选择列表中没有选择任何内容时将默认值设置为“空”,这可能是不正确的吗?如果从选择列表中没有选择任何内容,则强制我的数据输入表单在该字段中输入“null”值可能会解决问题??这样就可以了。空字符串与null不同。您还应检查fk的删除部分