科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道在SQL Server中处理空值时涉及的三个问题(2)

在SQL Server中处理空值时涉及的三个问题(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

这篇文章主要介绍了在SQL Server中处理空值时所涉及的3个问题:计数、使用空表值以及外键处理。

作者:赛迪网 来源:赛迪网 2007年11月22日

关键字: 函数 空值 数据库 SQL Server

  • 评论
  • 分享微博
  • 分享邮件

以下代码则创建子表,并在引用父表的列中插入一个空值。

CREATE TABLE Child
(pkey1 INT IDENTITYCONSTRAINT pkChild 
PRIMARY KEY,Parentpkey1 INT NULLCONSTRAINT fkChildParent 
FOREIGN KEYREFERENCES Parent(pkey1),col1 INT NULL)
GOINSERT Child (Parentpkey1, col1) VALUES (null,2)GO

但在以下代码中,要同时从父表和子表选择值。虽然父表不包含空值,但在子表引用了父表的那个列中,将允许一个空值。

然后丢弃所有表,清除这个演示所用的数据库对象。

SELECT * FROM ChildGOSELECT * FROM ParentGODROP TABLE Child, ParentGO

在可以为空的外键中检查数据的有效性

如果由两个列共同组成主键,而且一个子表将主键作为可为空值的外键来继承,就可能得到错误的数据。可在一个外键列中插入有效的值,但在另一个外键列中插入空值。然后,可添加一个数据表检查约束,在可为空的外键中检查数据的有效性。

任何多列外键都可能遇到同样的问题。所以,你需要添加一个检查约束来检测异常。最初,检查约束将检查构成外键的所有列中可能为空的值。检查约束还要检查这些列中不能为空的值。如两个检查都通过,问题就解决了。

以下示范脚本展示了这样的一个异常,以及如何用检查约束来纠正它。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章