创建规则对象

作者:leen 来源:ITPOW(原创) 日期:2006-6-9

SQL Server 规则是一个向后兼容的功能,它既可以用于列,也可以用于自定义数据类型,当用于列时它的功能与 CHECK 约束的功能相同,SQL Server 建议在限制列值时选用 CHECK 约束,因为它更简明,同时一个列可以有多个约束,却只能有一个规则,而我认为规则也不是没有优点,就是我们只需要修改规则便可实现多个列限制条件的变更。

创建规则对象
CREATE RULE rule AS condition_expression
如:
CREATE RULE ruleSalary AS @salary<10000
创建一个新水规则,所有薪水不得大于 10000,注意上述红色字体可以是任意名称。

删除规则对象
DROP RULE rule
如:
DROP RULE ruleSalary

删除多个规则
如:
DROP RULE ruleSalary, rulePower

绑定规则对象
要将规则对象使用起来就应该将其绑定到 UDT(用户自定义数据类型)或列,由于我们在谈用户自定义数据类型时会专门讲绑定,所以这里只说绑定到列。
用存储过程:
exec sp_bindrule rule, object_name
如:
exec sp_bindrule ruleSalary, 'employers.salary'
将 ruleSalary 绑定到表 employers 的 salary 列,假如要插入一个 salary 大于 10000 的记录时,由于规则的存在,就会插入失败。或者要将 salary 更改为大于 10000 的值时,便会失败。
如果一个列已经绑定了其它规则对象,我们再次绑定时,旧的规则对象将被替换。

解除绑定
用存储过程:
exec sp_unbindrule object_name
如:
exec sp_unbindrule 'employers.salary'

看到这里,我们回想起前面所说的默认值对象,它也有绑定和解除绑定的存储过程:sp_bindefault 和 sp_unbindefault,用法与 sp_bindrule 和 sp_unbindrule 相同。

查看绑定情况
那么一个规则到底绑定在哪些 UDT 或列上了呢?
展开企业管理器,找到规则,在规则名称上点右键->所有任务->显示相关性。

相关文章