我有两张表:主表A、从表B
A:
aID,aNameB:
bID,aIDaID和bID 都是自增----------------------------------------我现在要分别往A和B中加入数据
本来是应该:
insert A (aName) value ('xx')
插入A后再获取刚才插入的aID
然后将aID插入B----------------------------------------但是我现在想用事务:如果插入B失败则A也回滚
这样的话,就无法获取aID了----------------------------------------我现在要的结果就是:
插入A后获取aID,再将aID插入B
要是中间出现问题,则回滚

解决方案 »

  1.   

    存储过程思路:
    SET XACT_ABORT ON  --这个查下就知道了
    BEGIN TRANSACTION  --事务开始DECLARE @aID INT  --定义@aID变量准备获取表A的自增IDINSERT INTO A
    (aName)
    VALUES
    ('xx')SET @aID=@@IDENTITY  --利用@@IDENTITY获取表A的自增ID给@aIDINSERT INTO B  --将获取的表A的自增ID的值利用@aID输入表B
    (aID)
    VALUES
    (@aID)COMMIT TRANSACTION  --执行事务
      

  2.   

    如gogodiy所述,将两个INSert语句放一个事务里面就OK了