Ich versuche, diese Transaktion zu schreiben, wo ich versuche, eine Spalte zu einer Tabelle mit TRY..CATCH und TRANSACTION hinzuzufügen. Hier ist mein Code. Aber das Problem ist, dass die Spalte bereits in der Tabelle vorhanden ist und der Catch-Block ausgeführt werden sollte, aber der Catch-Block wird nicht ausgeführt und die Transaktion wird nicht zurückgerollt und auch die select error_number-Anweisung wird nicht ausgeführt.
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