高手帮忙看下,我下面的存储过程要在哪里设置回滚点?咋写?use bookManage
go
create proc addBooks_pro
@ISBN varchar(30),
@name varchar(40),
@publisher Varchar(40),
@p float,
@num int,
@bookBusiness varchar(40),
@t varchar(20)
as 
if exists(select * from book_now_num where bookID=@ISBN)
begin

update book_now_num set nowNum=nowNum+@num where bookID=@ISBN
insert into books(bookID,amount,byfrom,time) values(@ISBN,@num,@bookBusiness,@t) 
end

else
begin

insert into book_now_num values(@ISBN,@num)
insert into bookInfo values(@ISBN,@name,@publisher,@p)
insert into books(bookID,amount,byfrom,time) values(@ISBN,@num,@bookBusiness,@t)
end
go

解决方案 »

  1.   

    我觉得 应该在if的前面设置回滚点。  进入if了的话就会修改数据库了。怎么设置还不知道啊, 记着 下次再来看答案
      

  2.   

    savepoint:;if(){
       ....
     }else{
        ....
        
    }
    EXCEption
        rollback to ;
      

  3.   

    use bookManage 
    go 
    create proc addBooks_pro 
    @ISBN varchar(30), 
    @name varchar(40), 
    @publisher Varchar(40), 
    @p float, 
    @num int, 
    @bookBusiness varchar(40), 
    @t varchar(20) 
    as 
    savepoint:;
    if exists(select * from book_now_num where bookID=@ISBN) 
    begin  update book_now_num set nowNum=nowNum+@num where bookID=@ISBN 
    insert into books(bookID,amount,byfrom,time) values(@ISBN,@num,@bookBusiness,@t) 
    end else 
    begin  insert into book_now_num values(@ISBN,@num) 
    insert into bookInfo values(@ISBN,@name,@publisher,@p) 
    insert into books(bookID,amount,byfrom,time) values(@ISBN,@num,@bookBusiness,@t) 
    endEXCEption 
        rollback to ;
    go 这样吗?不对啊???