(有结果就结贴)关于事务和规则的小问题,请帮忙!555555555555555555555(没分了)

asp111222 2003-11-23 04:45:39
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!
我以为用事物可以。

不行。谁能帮忙?


...全文
25 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
asp111222 2003-11-23
  • 打赏
  • 举报
回复
谢谢
大力,,
不过在UP
pengdali 2003-11-23
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/TopicView1.asp?id=1675986
asp111222 2003-11-23
  • 打赏
  • 举报
回复
还有就是如何当不在RULE中的默然值和INSERT入的数值不一样时候,INSERT不被执行,而且不会显示消息 513!
我以为用事物可以。
5555

34,829

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧