号称最基础的一个事务问题!!!!!!!!!!!!!!!!!!!1

v41dugu 2007-09-06 11:13:21
create procedure pd_Trans @id int,@name varchar(30)
as
begin transaction BookTrans

insert into books(bookid,bookname) values(@id,@name)
insert into newbook(bookid,bookname) values(@id,@name)

commit transaction BookTrans
//////////////////////////////////////////想在两个表中插入相同数据,第2个插入失败 那么第一个也不能执行 我这么写事务错了吗?

////////////////////这里我在newbook这个表中加个check约束 使不能插入名叫C++
的书:
alter table newbook
add constraint Ck_BookName check(bookname!='C++')


//执行这个存储过程,为什么显示了newbook插入的数据与check冲突,插入失败,但是为什么book表中还是插入了数据 我的事务为什么没起作用:

execute pd_Trans 1,'C++'
...全文
146 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
v41dugu 2007-09-07
  • 打赏
  • 举报
回复
哦!!! 懂了 谢谢哦
ojuju10 2007-09-07
  • 打赏
  • 举报
回复
楼主的写的事务只要提交,没有回滚!
Limpire 2007-09-06
  • 打赏
  • 举报
回复
create procedure pd_Trans @id int,@name varchar(30)
as
begin transaction BookTrans

insert into books(bookid,bookname) values(@id,@name)
insert into newbook(bookid,bookname) values(@id,@name)

if @@error = 0
commit transaction BookTrans
else
rollback transaction BookTrans

go

34,590

社区成员

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

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