【SQL】默认值和规则


下面来演示以下两种完整性约束的操作
由于SQL Server2008取消了以下两项操作的图形界面操作,我们只能用命令创建,配合图形界面来观察结果了。

默认值的用法

先创建了一个20岁的年龄的默认值,在我们添加学生不输入学生年龄的时候,系统自动添加默认值。
可以看到系统自动添加年龄20

我们现在再来看下面的问题,第一个是默认值对象,注意,不是默认值,而是个对象,注意我们要先创建对象。
在我们没有用语句创建之前,我们先来观察一下,可以看到现在还没有对象的存在,我们创建一个,默认值对象为“女”的,

创建默认值对象

create default
绑定默认值对象
sp_bindefault
解绑默认值对象
sp_unbindefault
删除默认值对象
DROP default

实例

create default Ssex_df as '女' --创建性别默认值对象
可以看到对象已存在,下面再来看看这个对象改怎么用,把这个对象关联或绑定到要用的字段,没做之前我们观察下,目前是空的,我们来关联,关了,再打开,相当于刷新一下,
EXEC sp_bindefault 'Ssex_df', 'Student.Ssex' --绑定到性别列
可以看到,刚才创建的默认值对象dbo.Ssex_df,已经和学生性别列关联到一起了,用的是对象绑定的方式,关联的实际上是里面的具体值“女”,我们再来检验一下,是否有作用,添加一个学生,性别空,看看系统怎么处理。
注意,已经能看到,系统自动填充了 女 和 20,前者是用对象关联填充的,后者是直接填充值的,都是默认值的用法。
下面我们来删除,不要了,可以看到不让删除,现在对象处于绑定状态,也就是在用中,则不让删除,我们必须把关联取消,使之不用了,才能删除。也就是说要先解绑,再删除!可以看到解绑后,再删除,没问题了。对应解绑再删除的命令方式,见下面语句
EXEC sp_unbindefault 'Student.Ssex' --解绑
DROP default Ssex_df --删除对象

以上是默认值及默认值对象的操作,两者的区别就是一个是具体值,一个是具体值的对象封装,都是默认约束的用法。
下面是另外一种,规则,使用方法和默认值对象的一样。先创建 规则对象,再绑定,删除前要先解绑。下面我们来看看规则的操作命令。

创建规则

create rule
绑定规则
sp_bindrule
解绑规则
sp_unbindrule
删除规则
drop rule

来看个例子,操作前先观察一下。目前是空的,我们来建个新的

实例

create rule Sno_rule
as @range like '2002[0-9][0-9][0-9][0-9][0-9]' --创建学号规则
@range是个变量名称,不是具体字段名,在关联绑定后则代表具体字段了,后面的like语句代表2002开头,后面的5位,每一位都是从0-9,表示[0-9],我们来创建对象。
可以看到对象了,下面我们来绑定。来检验一下。可以看到规则提示错误了,与2002开头不符,这就是规则约束检查的作用,可以看到按规则要求则可以添加成功!
EXEC sp_bindrule 'Sno_rule', 'Student.Sno' --绑定到学号列
不要了,删除前要先解绑!
EXEC sp_unbindrule 'Student.Sno' --解绑
drop rule Sno_rule --删除对象

删除成功!

以上两种约束演示结束!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cout0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值