sql server 规则

1、规则的创建

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

create rule rule_no1 as @e_salary>500

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

 图片 1

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

2、把自定义规则绑定到列

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

exec sp_bindrule ‘rule_no1′,’employee.e_salary’

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

 图片 2

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

3、取消规则绑定

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

exec sp_unbindrule ’employee.e_salary’

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

 图片 3

4、删除规则

drop rule rule_no1

 图片 4

5、验证规则作用

当规则绑定到指定的数据列上之后,用户的操作必须满足规则的要求,如果用户执行了违反规则的操作,将被禁止执行。

图片 5

 

相关文章