以前没用过事务,怎么使用事务回滚?
*以下是1个简单的过程,要同时向2个表 test1,test2 插入数据,*在VFP中这样调用就可以
id1=1
name1='a'
score1=1
out=0
SQLEXEC(con,"{call add_test(?id1,?name1,?score1,?@out1)}")
?out &&是可以正常返回要的值的,只是,不知道怎么回滚
*先在 test1找这个数据,存在返回 -1,不存在就往 test1 写数据
*检查刚才的数据有无成功写到 test1 去,没写进去返回 -2
*往 test2 写数据,检查 test2有无成功写数据,没写进去返回-3
*如果返回值 out1=-3时,表示 test2 没成功写数据,而 test1成功写数据,怎么利于事务来处理,回滚 test1 表
*或者用其他的比较好的方法也可以。
--sql2000 存储过程
alter proc add_test(@id1 as int,@name1 as varchar(10),@score1 as numeric(5,2),@out1 int output)
as
begin
set @out1=1
if exists(select id from test1 where id=@id1)
set @out1=-1
else
begin
INSERT INTO test1(id,name,score) values(@id1,@name1,@score1)
if not exists(select id from test1 where id=@id1)
set @out1=-2
else
begin
declare @id2 int
set @id2=@id1 * @id1 --故意制造不同数据,造成ID 不相同
INSERT INTO test2(id,name,score) values(@id2,@name1,@score1)
-- INSERT INTO test2(id,name,score) values(@id1,@name1,@score1)
if not exists(select id from test2 where id=@id1)
set @out1=-3
end
--在这里判断?
end
end