规则的概念:
使用CREATE RULE语句可以创建规则,其语法结构如下:
CREATERULE <架构名>.<规则名>
AS<规则表达式>
规则表达式中可以包含算术运算符、关系运算符和谓词(例如IN、LIKE、BETWEEN等)。
例:
创建一个规则SexRule,[email protected]值只能为'男'或'女',代码如下:
CREATERULE SexRule
[email protected] IN ('男', '女')
例:创建一个规则WageRule,指定变量@wage的取值范围为0~50000,代码如下:
CREATERULE WageRule
[email protected] BETWEEN 0 AND 50000
绑定规则:
sp_bindrule [ @rulename = ]规则名,
[ @objname = ]对象名
例:USE HrSystem
GO
EXECsp_bindrule 'SexRule', 'Employees.Sex'
GO
执行的结果如下:
已将规则绑定到表的列。
例:
下面通过一个INSERT语句验证规则的应用效果。执行下面的INSERT语句,向表Employees中插入一条记录。
USEHrSystem
GO
INSERTINTO Employees (Emp_name, Sex, Title, Wage,IdCard,Dep_id)
VALUES('小李', '无', '职员', 10000, '110123xxxx', 1)
GO
消息513,级别16,状态0,第2行
列的插入或更新与先前的CREATE RULE语句所指定的规则发生冲突。该语句已终止。冲突发生于数据库'HrSystem',表'dbo.Employees',列'Sex'。
语句已终止。
解除规则绑定:
sp_unbindrule [ @objname = ]对象名
例:
使用存储过程sp_unbindrule取消表Employees的列Sex上绑定的规则,具体语句如下:
USE HrSystem
GO
EXECsp_unbindrule 'Employees.Sex'
GO
(所影响的行数为1 行)
已从表的列上解除了规则的绑定。
删除规则:
DROPRULE 规则名1 [,规则名2, ...,规则名n]
使用DROP RULE删除规则SexRule,具体语句如下:
USE HrSystem
EXECsp_unbindrule 'Employees.Sex'
DROPRULE SexRule