Check 约束是一种快速的行级完整性检查机制。它可以最终返回布尔真或假的小算式。
Check 约束的速度比触发器要快得多,如果能够使用check约束来实施数据验证,就应当用check来代替触发器。
Check 约束实例:
CREATE TABLE J_user
(
NewID int identity(1,1) primary key,
userid int check (userid<>'1'),
username nvarchar](20),
useradd nvarchar (50) ,
Brithdate datetime
) ON [PRIMARY]
创建用户规则:
create rule birthdate as @Birthdate <= getdate()
---创建一个名叫birthdate 的规则,声明规则:生日小于当前日期
将规则应用到列中,或者用户定义的数据类型:
EXEC SP_bindrule ---调用SP_bindrule系统存储过程
@rulename='birthdate', ---引用前面已建好的规则
@objname='J_user.Brithdate' ---应用到J_user.Brithdate
----------------------------------------------------------------------------------------------------------------------------------------
默认值:
CREATE TABLE J_user
(
NewID int identity(1,1) primary key,
userid int check (userid<>'1'),
username nvarchar](20) default 'FULL', ----如不输入姓名,就默认为‘FULL’
useradd nvarchar (50) ,
Brithdate datetime
) ON [PRIMARY]
添加默认值:
alter table J_user
add constraint AA -----创建一个名为AA的约束
default 'FULL' for username -----指定username的值为'FULL'
用户定义Default对象:
create default userdefault as getdate() ---创建一个名为userdefault的对像,默认值为当前日期
引用这个默认值:
EXEC SP_bindefault ----调用SP_bindefault系统存储过程
@defname='userdefault', ----引用上面已建好的default对象
@objname='J_user.Brithdate' ----绑定到J_user.Brithdate
-----------------------------------------------------------------------------------------------------------------------------------------------------
用户定义数据类型:
用户定义的数据类型需要指定:1.名字;2.数据类型;3.为空性;
EXEC SP_addtype ----调用SP_addtype系统存储过程
@typename=Birthdate, ----声明名字
@phystype=smalldatetime, ----声明数据类型
@nulltype='NOT NULL' ----声明为空性
引用用户定义的数据类型:
EXEC SP_bindrule ---调用SP_bindrule
@rulename='Birthdate', ---引用已建好的数据类型
@objname='J_user.Brithdate' ---绑定到J_user.Brithdate