如何将自动递增的id传递到另一个表

时间:2017-01-11 07:03:25

标签: mysql sql sql-server transactions

我有两个名为user_info和food_info的表,user_info有一个名为user_id的自动递增属性。现在我想通过如下图所示的事务一次插入两个表,我已经手动完成了这个,现在我想通过事务查询实现这一点。 注意,food_info的user_id不会自动递增。

enter image description here

1 个答案:

答案 0 :(得分:0)

 -- Declare Variables
 DECLARE @ErrorMessage NVARCHAR(4000),
    @ErrorSeverity INT,
    @ErrorState INT,
    @Last_Inserted_ID INT;

-- Try Catch Block
 BEGIN TRY

-- Start Transaction
  BEGIN TRANSACTION
    INSERT INTO [dbo].[user_info]
            ([user_name]
            ,[pass])
        VALUES
               ('U11'
               ,'U12')

    -- Returns the last identity value inserted
    SET @Last_Inserted_ID = @@IDENTITY;

    INSERT INTO [dbo].[food_info]
               ([user_id]
               ,[food_type])
         VALUES
               (@Last_Inserted_ID
               ,'Food1')

    PRINT 'Values inserted successfully...'

 COMMIT TRANSACTION
 END TRY
 BEGIN CATCH
    SELECT 
        @ErrorMessage = ERROR_MESSAGE(),
        @ErrorSeverity = ERROR_SEVERITY(),
        @ErrorState = ERROR_STATE();

    RAISERROR (
        @ErrorMessage,
        @ErrorSeverity,
        @ErrorState    
        );
    ROLLBACK TRANSACTION
END CATCH