使用检查约束验证SQL Server中的数据
2009-04-16 10:27:11 来源:WEB开发网CREATETABLEdbo.Payroll
(
IDintPRIMARYKEY,
PositionIDINT,
SalaryTypenvarchar(10),
Salarydecimal(9,2)
CONSTRAINTCK_Payroll_SalaryCHECK(Salary<150000.00)
);
这里我将检查约束命名为CK_Payroll_Salary了。
上面的例子都仅在单个列上创建了检查约束,而且也只有一个条件,其实检查约束表达式可以包括多个条件,下面就是一个包含多个条件的检查约束:
CREATETABLEdbo.Payroll
(
IDintPRIMARYKEY,
PositionIDINT,
SalaryTypenvarchar(10),
Salarydecimal(9,2)
CONSTRAINTCK_Payroll_Salary
CHECK(Salary>10.00andSalary<150000.00)
);
如果要让SQLServer拒绝一条记录,那在检查约束逻辑表达式的最终输出中需要计算为FALSE,因此,在这个例子中,检查约束会验证Salary大于10且小于150000,这两个条件中任意一个检查结果返回FLASE,都会直接拒绝Payroll表中对行的INSERT或UPDATE请求,提示也会显示一条错误消息。
如果你想创建一个表级检查约束,你可以使用下面的代码:
CREATETABLEdbo.Payroll
(
IDintPRIMARYKEY,
PositionIDINT,
Salarydecimal(9,2),
SalaryTypenvarchar(10),
CHECK(Salary>10.00andSalary<150000.00)
);
在这里我创建了单个表级约束,检查Salary列,但可以使用表中的任意列,因为这是一个表级检查,注意CHECK子句将会引起SQLServer生成一个检查约束名,因为我没有手动为其命名。
更多精彩
赞助商链接