有三张表:User(用户)--主外键Order(订单)--主外键OrderBook(订单详细书)删除用户时就涉及到Order,OrderBook,
我想写一个存储过程加事物来删除三张表的信息,但是我写出来还是要报外键关系的错误,有哪位高手指点一下嘛?谢谢了!

解决方案 »

  1.   

    调整一下删除的顺序 用事务比如order 有外键userid就先删 order中的数据 先删除子表 
    在删除主表
      

  2.   

    这是我写了:
    alter proc PROC_DELUSER
    as
    begin transaction
    delete from users where id=16
    declare @errorSum int
    set @errorSum=@@error 
    if @errorSum<>0
    begin
    print '12'
    declare @Oid int
    while(@Oid!=0)
    begin
    select @Oid=id from orders where userid=16
    delete from orders where id=@Oid
    declare @errorOrder int
    set @errorOrder=@@error
    if @errorOrder<>0
    begin
    delete from orderbook where orderid=@Oid
    end
    end
    delete from users where id=16
    commit transaction
    end
    else 
    commit transaction