规则是什么?
是单独的SQL Server对象,可以关联到一个或几个表中的一列或几列。它可以使用多种方式来完成对数据值的检验,可以使用函数返回验证信息,也可以使用关键字BETWEEN、LIKE和IN完成对输入数据的检查
通俗来说就是:对一个表的某一列创建一个规则,当用户插入数据时,能插入什么样的数据,不能插入什么样的数据,起到一个限制的作用
如何创建一个规则?
语法: CREATE RULE rule_name AS codition_expression
需求:现有一个score表,限制用户输入分数的值,只能在0-100之间
score
id | cid | score |
1 | 1 | 66 |
2 | 1 | 99 |
3 | 2 | 77 |
第一步,创建规则
--创建规则sc --设置成绩得取值范围在0和100之间 create rule sc as @value between 0 and 100
第二步,绑定规则到具体的列
--绑定规则到score表的score列 sp_bindrule sc,'score.score'
当我对score表的score列进行数据插入时,系统就会自动报错
如何删除规则?
注:如果要删除 某一个规则的话,必须先对这个规则进行“解除绑定”操作,然后再删除规则
解除规则绑定 语法: --解除规则绑定 sp_unbindrule[@obkectname=]<object_name> [,[@futureonly=]<futureonlu_flag>
需求:删除score规则
--解除规则绑定 sp_unbindrule 'score.score' --删除规则 drop rule score
可能有些小伙伴就会问了,CHECK约束也是对表中的某一列起限制作用,那有一个不就行了,为什么还要有两个呢?他们有什么区别?我们先动手试试吧~~
如何创建约束?
实例:使用约束的方法对score列指定范围,限制输入
--创建check约束 --指定字段score输入的分数在0和100之间 create table score_info ( id int not null, cid int not null, score int CHECK( score between 0 and 100) );
现在对score表score字段进行数据插入操作,这是系统就会自动报错
相关用户也可以点击:SQL的五大约束_吃豆子的恐龙的博客-CSDN博客
规则和约束有什么不同?
- 规则是单独存储在该数据库中的,约束是和表联系在一起的
- 当表删除时,约束也就被删除了,规则并不会
- 一个字段可以有多个约束,但只能有一个规则