(有结果就结贴)关于事务和规则的小问题,请帮忙!555555555555555555555(没分了)
if exists (select * from sysobjects where id=object_id('myTable'))
drop table myTable
if exists (select * from sysobjects where id=object_id('rl_myRule'))
drop rule rl_myRule
go
create table myTable(
id int not null
identity(1,1),
var varchar(20)
)
go
create rule rl_myRule
as
@scode in ('MN','ND','SD','WI','IA')
go
exec sp_bindrule rl_myRule ,'dbo.myTable.var'
go
begin tran
insert myTable
values('MN')
commit
insert myTable
values('ND')
begin tran
insert myTable
values('fasdfdas')
if @@error<>0
rollback tran----------------------滚回事务
else
commit tran
go
select * from myTable
/*################以下是执行结果###########################*/
将规则绑定到表的列上。
(所影响的行数为 1 行)
(所影响的行数为 1 行)
服务器: 消息 513,级别 16,状态 1,行 1
列的插入或更新与先前的 CREATE RULE 语句所强制的规则冲突。该语句已终止。冲突发生于数据库 'Strawberry',表 'myTable',列 'var'。
语句已终止。
id var
----------- --------------------
1 MN
2 ND
(所影响的行数为 2 行)
/*############################-----疑问---------######################*/
为什么已经放在事务块中了还得到的消息 513的错误?不是已经滚回了么?
如何使其不显示消息 513错误消息呢?
还有就是如何当不在RULE中的INSERT数值不被执行,而且不会显示消息 513!
我以为用事物可以。
不行。谁能帮忙?