3

以下の SQL を使用してレコードを削除し、トランザクション内の Customers テーブルに挿入しています。挿入ステートメントにエラーがある場合、エラー メッセージが表示されselect * from customers、実行しようとすると結果セットが表示されません。そして、SSMSウィンドウを閉じると、表示されますThere are uncommitted transactions. Do you wish to commit these transactions before closing the window?

[OK] をクリックすると、テーブルから結果が表示されます。それで、トランザクションの使用中に行われるロックメカニズムはありますか。

USE CMSDB;
BEGIN TRY
    BEGIN TRAN t1;

        DELETE FROM Customers
        print @@trancount -->prints 3 since there are three records
        INSERT INTO CUSTOMERS
        INSERT INTO CUSTOMERd --> error here
        INSERT INTO CUSTOMERS

    COMMIT TRAN t1;
END TRY
BEGIN CATCH 
    print 'hi' --> not printing
    select @@trancount --> not resulting anything
    IF @@TRANCOUNT > 0 
        ROLLBACK TRAN t1;
    -- Error Message
    DECLARE @Err nvarchar(1000)
    SET @Err = ERROR_MESSAGE()
    RAISERROR (@Err,16,1)
END CATCH
GO

メッセージ

(3 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)
Msg 208, Level 16, State 1, Line 8
Invalid object name 'dbo.Customerd'.
4

1 に答える 1