LOGO数据完整性数据完整性之之域完整性的实现域完整性的实现((2))域完整性的实现域完整性的实现实现域完整性通过实现域完整性通过——ØCHECK约束Ø规则Ø默认值约束默认值约束Ø默认值对象默认值对象 默认值约束及默认值对象默认值约束及默认值对象Ø可以为字段定义默认值,方便用户的使用通过可以为字段定义默认值,方便用户的使用通过两种方式实现:两种方式实现: Ø((1)在创建表或修改表时,定义默认值约束在创建表或修改表时,定义默认值约束Ø((2)先定义默认值对象,然后将该对象绑定到表)先定义默认值对象,然后将该对象绑定到表的相应字段的相应字段默认值约束默认值约束Ø1.默认值约束的定义及删除Ø((1)定义)定义Ø方法一:通过企业管理器实现方法一:通过企业管理器实现Ø方法二:方法二:SQL语句实现语句实现创建表时定义一个字段的默认值约束时定义一个字段的默认值约束ØCREATE TABLE table_name /*指定表名指定表名Ø(column_name datatype NOT NULL | NULLØ[DEFAULT constraint_expression] /*默认值约束默认值约束Ø[,…n])Ø说明:说明: constraint_expression表达式为默认值约束表表达式为默认值约束表达式,此表达式只能是常量、系统函数或达式,此表达式只能是常量、系统函数或NULL。
对于对于timestamp或带或带IDENTITY属性的字段不能定义默认值属性的字段不能定义默认值约束Ø课外阅读:课外阅读: 【【例例】】在创建表时定义一个字段的默认值约在创建表时定义一个字段的默认值约束在定义默认值约束的同时指定约束名USE XSCREATE TABLE XSDA1 ( 学号 char(6) NOT NULL,姓名 char(6) NOT NULL,专业名 char(10) NULL,性别 bit NOT NULL CONSTRAINT sexdflt DEFAULT 1)GO课外阅读:默认值约束默认值约束方法三:方法三:SQL语句实现语句实现修改表修改表时定义一个字段的默认值约束时定义一个字段的默认值约束【【例例】】在修改表时定义一个在修改表时定义一个新字段政治面貌并为其添加默认并为其添加默认值约束值约束团员USE XSALTER TABLE XSDA1 ADD 政治面貌政治面貌 char(4) NOT NULL CONSTRAINT zzmmdflt3 DEFAULT '团员团员' WITH VALUESGO说明:如果添加的新列允许空值,若使用了说明:如果添加的新列允许空值,若使用了WITH VALUES,则将为表中各现有行添加的新字段提供默认,则将为表中各现有行添加的新字段提供默认值;如果没有使用值;如果没有使用WITH VALUES,那么每一行的新列,那么每一行的新列中都将为中都将为NULL值。
如果添加的新列不允许空值,则不论值如果添加的新列不允许空值,则不论是否有是否有WITH VALUES选项,那么表中各现有行添加的选项,那么表中各现有行添加的新字段都将取上述默认值新字段都将取上述默认值默认值约束默认值约束Ø【【例例5-12】】在修改表时为学分字段添加默认值约束值为在修改表时为学分字段添加默认值约束值为6ØUSE XSØALTER TABLE KCXX ØADD CONSTRAINT XF_DEFA DEFAULT(6) FORFOR 学分学分ØGOØ((2)默认值约束的删除)默认值约束的删除Ø【【例例5-12】】删除上例定义的默认值约束删除上例定义的默认值约束ØUSE XSØALTER TABLE XSDA ØDROP CONSTRAINT XF_DEFAØGO(课外阅读:(课外阅读:))默认值对象默认值对象Ø2.默认值对象的定义、使用及删除Ø((1)使用企业管理器)使用企业管理器定义和绑定DEFAULT默认值对象默认值对象Ø①① 使用企业管理器使用企业管理器定义DEFAULT默认值对象Ø以以XS数据库为例,对于数据库为例,对于XSDA表中的民族字段,定义其表中的民族字段,定义其默认值为默认值为“汉汉”。
Ø②② 使用企业管理器使用企业管理器绑定DEFAULT默认值对象Ø默认值对象定义以后,要让它默认值对象定义以后,要让它生效,必须绑定到列或用户,必须绑定到列或用户定义数据类型定义数据类型Ø方法方法1:右键单击默认值对象:右键单击默认值对象--【【属性属性】】,,Ø 【【绑定绑定UDT】】,表示绑定到用户定义数据类型;,表示绑定到用户定义数据类型;Ø 【【绑定列绑定列】】,表示绑定到列表示绑定到列Ø方法方法2:表设计器:表设计器——下拉列表下拉列表默认值对象默认值对象((2)使用)使用T-SQL语句定义和绑定语句定义和绑定DEFAULT默认值对象默认值对象①① 使用使用T-SQL语句语句定义DEFAULT默认值对象默认值对象CREATE DEFAULT default_name AS constant_expression说明:默认值对象名必须符合标识符规则约束表达式说明:默认值对象名必须符合标识符规则约束表达式constant_expression只能是常量表达式默认值对象必须与列只能是常量表达式。
默认值对象必须与列数据类型兼容数据类型兼容课外阅读:课外阅读: 默认值对象默认值对象Ø②② 使用系统存储过程使用系统存储过程绑定默认值对象默认值对象Øsp_bindefault [@defname=]’default’,Ø [@objname=]’object_name’ØØ说明:说明: Ødefault指定默认值对象名;指定默认值对象名; Øobject_name指定准备绑定默认值对象的表的列名(格指定准备绑定默认值对象的表的列名(格式为:式为:表名.字段名)或)或用户定义的数据类型名不能将默认值对象绑定到默认值对象绑定到timestamp数据类型的列、带数据类型的列、带IDENTITY属性的列或者已经有属性的列或者已经有DEFAULT约束的列;约束的列;Ø课外阅读:课外阅读:Ø【【例例】】对于前面所述的对于前面所述的XSDA表中的民族字段可用如下程序实现默认表中的民族字段可用如下程序实现默认值设置为值设置为“汉汉”ØUSE XSØGOØCREATE DEFAULT mz_default AS '汉汉' ØGOØEXEC sp_bindefault 'mz_default1','XSDA.民族民族'ØGOØ【【例例】】在在XS数据库中创建名为数据库中创建名为rxdate的默认值对象(取值为当前系的默认值对象(取值为当前系统日期),然后将其绑定到统日期),然后将其绑定到XSXX表(例表(例5-1中创建)的入学日期列。
中创建)的入学日期列ØUSE XSØGOØCREATE DEFAULT rxdate AS getdate()ØGOØEXEC sp_bindefault 'rxdate','XSXX.入学日期入学日期'ØGOØ【【例例】】对于前面所述的对于前面所述的XSDA表中的民族字段可用如下程序实现默认表中的民族字段可用如下程序实现默认值设置为值设置为“汉汉”ØUSE XSØGOØCREATE DEFAULT mz_default AS '汉汉' ØGOØEXEC sp_bindefault 'mz_default1','XSDA.民族民族'ØGOØ【【例例】】在在XS数据库中创建名为数据库中创建名为rxdate的默认值对象(取值为当前系的默认值对象(取值为当前系统日期),然后将其绑定到统日期),然后将其绑定到XSXX表(例表(例5-1中创建)的入学日期列中创建)的入学日期列ØUSE XSØGOØCREATE DEFAULT rxdate AS getdate()ØGOØEXEC sp_bindefault 'rxdate','XSXX.入学日期入学日期'ØGO默认值对象默认值对象Ø((3)默认值对象的删除)默认值对象的删除Ø应应解除解除默认值对象的绑定关系,然后才能默认值对象的绑定关系,然后才能删除删除该默认值对该默认值对象。
象Ø①① 使用使用sp_unbindefault解除绑定关系绑定关系Øsp_unbindefault [@objname=]’object_name’Ø Ø说明:参数说明:参数object_name为要解除默认值对象绑定关系为要解除默认值对象绑定关系的字段名(格式为:表名的字段名(格式为:表名.字段名)或用户定义类型名字段名)或用户定义类型名Ø②② 删除默认值对象默认值对象ØDROP DEFAULT {default}[,…n]Ø说明:参数说明:参数default为现有默认值对象名;参数为现有默认值对象名;参数n表示可表示可以指定多个默认值对象同时删除以指定多个默认值对象同时删除Ø【【例例】】解除默认值对象解除默认值对象xb_default与用户定义数据类型与用户定义数据类型sex的绑定关系,然后删除名为的绑定关系,然后删除名为xb_default的默认值对的默认值对象ØUSE XS ØIF EXISTS(SELECT name FROM sysobjectsØ WHERE name='xb_default' AND type='D')ØBEGINØ EXEC sp_unbindefault 'sex' Ø DROP DEFAULT xb_default ØENDØGOØ 默认值约束与默认值对象的区别:Ø默认值约束是在一个表内默认值约束是在一个表内针对某一个字段定义的,仅对该字段有效。
Ø默认值对象是默认值对象是数据库对象之一,在一个数据库内之一,在一个数据库内定义,可绑定到一个用户定义数据类型或库中某定义,可绑定到一个用户定义数据类型或库中某个表的字段,个表的字段,可重复利用LOGOAdd your company slogan。