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