首页 理论教育SQLServer2012中域完整性的实现和错误提示

SQLServer2012中域完整性的实现和错误提示

【摘要】:域完整性也称为列完整性,是指一个数据集对某一个列是否有效和确定是否允许为空值。在SQL Server 2012中,域完整性可以通过空值约束、默认约束和检查约束实现。设置成功后,当Sex列数据违反此“CHECK约束”,系统自动提示错误信息,如图8-20所示。图8—19“CHECK约束表达式”对话框图8—20违反“CHECK约束”CHECK约束是表对象,在表的“约束”中可以查看。

域完整性也称为列完整性,是指一个数据集对某一个列是否有效和确定是否允许为空值。在SQL Server 2012中,域完整性可以通过空值约束、默认约束和检查约束实现。

1.空值约束

在表结构设计器中可以设置“允许Null值”。某列被设置为“NULL”或“NOT NULL”,该列取值就可以为空或不能为空。一旦某列被设置为主键或唯一性索引,系统自动将其设置为“NOT NULL”。当表中某列被设置为“NOT NULL”,而其值违反约束,系统自动提示错误信息,如图8-13所示。

图8—13 违反空值约束

如果空值约束设置需要修改或删除,可以在表结构设计器中修改或删除,如图8-14所示。

图8—14 修改“允许Null值”

使用T-SQL,语句也可以实现空值约束。在CREATE FABLE或ALTER TABLE语句中,使用NULL或NOT NULL可以实现空值约束的创建、修改或删除。

2.默认约束

默认约束也称为默认值约束。当某列(例如Sex列)设置默认值,即设置了默认约束。该列取值可以是新输入的数据,如果没有选取默认值。默认约束是表对象,在表的“约束”中可以查看,如图8-15所示。

图8—15 默认约束对象

如果默认约束对象需要重命名或删除,可以右键点击,从弹出的快捷菜单中选择相应选项。如果修改默认约束的值,可以在表结构设计器中修改或删除,如图8-16所示。

图8—16 修改“默认值或绑定”

使用T-SQL语句也可以实现默认约束。在CREATE TABLE或ALTER TABLE语句中,使用DEFAULT子句实现默认约束的创建、修改或删除。(www.chuimin.cn)

3.检查约束

例如,在Student表中,Sex列只能取值“男”或“女”。如果误输入其他值则肯定错误。又例如在Mark表中,Score列通常只能取值0~100,超出范围也错误。这些错误都是逻辑性错误,这时就可以设置检查约束来进行约束。检查约束又称为CHECK约束在表结构设计器中打开Student表,右键点击,在弹出的快捷菜单中选择“CHECK约束”选项,如图8-17所示。进入“CHECK约束”对话框,单击“添加”按钮,添加一个新的检查约束对象,如图8-18所示。

图8—17 选择“CHECK约束”菜单选项

图8—18 “CHECK约束”对话框

选择“表达式”选项,弹出“CHECK约束表达式”对话框,在其中输入约束表达式。例如输入Sex列“CHECK约束”表达式:Sex=’男’OR Sex=’女’,如图8-19所示。设置成功后,当Sex列数据违反此“CHECK约束”,系统自动提示错误信息,如图8-20所示。

图8—19 “CHECK约束表达式”对话框

图8—20 违反“CHECK约束”

CHECK约束是表对象,在表的“约束”中可以查看。如果“CHECK约束”对象需要重命名或删除,可以选择右键快捷菜单中相应的选项。如果修改“CHECK约束”的约束表达式,可以在“CHECK约束”对话框中操作,如图8-21所示。

图8—21 修改“CHECK约束”

使用T-SQL语句也可以实现CHECK约束。在CREATE TABLE或ALTER TABLE语句中,使用CHECK子句实现。

当使用ⅠNSERT、UPDATE语句违反唯一性约束时,系统也会提示错误信息。