SQL Server——规则是什么?规则和约束有什么不同?

目录

规则是什么?

如何创建一个规则?

如何删除规则?

如何创建约束?

规则和约束有什么不同?


规则是什么?

是单独的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字段进行数据插入操作,这是系统就会自动报错

相关用户也可以点击:https://blog.csdn.net/weixin_43319713/article/details/104320998


规则和约束有什么不同?

  • 规则是单独存储在该数据库中的,约束是和表联系在一起的
  • 当表删除时,约束也就被删除了,规则并不会
  • 一个字段可以有多个约束,但只能有一个规则

猜你喜欢

转载自blog.csdn.net/weixin_43319713/article/details/105938444