灵活设置规则

来源:互联网 发布:做淘宝快递单怎么打印 编辑:程序博客网 时间:2024/05/03 07:30
/*
刚写了一个灵活设置默认值的,再来一个灵活设置规则的,其实基本上是一样的。
参考联机帮助: Create rule; sp_bindrule; sp_unbindrule
下面是测试:
*/
/*创建一个测试用表*/
create table test_tb(id int ,Country varchar(10))
--没有绑定Rule时全部insert成功
insert test_tb values(1,'China')
insert test_tb values(2,'Japan')
insert test_tb values(3,'England')
insert test_tb values(4,'Russia')
go
/*创建一个规则*/
Create Rule list_rule
As
@list In ('China', 'Japan', 'England')
go
/*将规则绑定到列country*/
EXEC sp_bindrule 'list_rule', 'test_tb.Country'
--绑定规则后再测试
insert test_tb values(11,'China')
insert test_tb values(12,'Japan')
insert test_tb values(13,'England')
insert test_tb values(14,'Russia') -- 此句不符合规则,insert不成功
go

--取消绑定
EXEC sp_unbindrule 'test_tb.Country'
go
--删除规则
Drop rule list_rule
go
--新建一个规则,值稍加修改
Create Rule list_rule
As
@list In ('China', 'Japan', 'Russia')
go
--再次绑定
EXEC sp_bindrule 'list_rule', 'test_tb.Country'
go
--绑定新规则后再测试
insert test_tb values(21,'China')
insert test_tb values(22,'Japan')
insert test_tb values(23,'England') -- 此句不符合规则,insert不成功
insert test_tb values(24,'Russia')
--查询结果
select * from test_tb
/*
id Country
----------- ----------
1 China
2 Japan
3 England
4 Russia
11 China
12 Japan
13 England
21 China
22 Japan
24 Russia

(所影响的行数为 10 行)
*/