读书人

有关SQL语句的批处理机制。该怎么解决

发布时间: 2012-01-18 00:23:26 作者: rapoo

有关SQL语句的批处理机制。
我有一个存储过程,里面包含了两句T-SQL语句。
CREATE PROCEDURE abc
@id varchar(30) AS
insert tb1(id,name) SELECT id,name from tb2 where id=@id
delete from tb2 where id=@id
go

因为id是tb1的唯一索引,索引当在tb1中插入重复id时会提示出错,insert语句插入失败。可是奇怪的是后面的delete语句还是执行了。结果插入失败而删除却成功了。
怎样让这两个语句作为一个整体来运行,插入失败就退出,不要删除了。

[解决办法]
加事务就行了.

CREATE PROCEDURE abc
@id varchar(30) AS
set xact_abort on
begin tran
insert tb1(id,name) SELECT id,name from tb2 where id=@id
delete from tb2 where id=@id
commit tran
go

读书人网 >SQL Server

热点推荐