我想寫這個事務,我試圖使用TRY..CATCH和TRANSACTION將列添加到表中。這是我的代碼。但問題是表中的列已經存在,catch塊應該執行,但catch塊沒有執行,並且事務沒有被回滾,select error_number語句也沒有執行。改變SQL Server事務中的表
BEGIN TRY
BEGIN TRANSACTION;
ALTER TABLE ONADJ ADD BR_INIT CHAR (3) NULL REFERENCES BRANCH(BR_INIT)
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER() AS ERRORNUMBER,ERROR_MESSAGE() AS ERRORMESSAGE;
IF (XACT_STATE()) = -1
BEGIN
PRINT
N'THE TRANSACTION IS IN AN UNCOMMITTABLE STATE. ROLLING BACK TRANSACTION.'
ROLLBACK TRANSACTION;
END;
IF (XACT_STATE()) = 1
BEGIN
PRINT
N'THE TRANSACTION IS COMMITTABLE. COMMITTING TRANSACTION.'
ROLLBACK TRANSACTION;
END;
END CATCH