2

テーブル内のデータを削除しようとしています

BEGIN TRAN 

DELETE FROM TABLEA
DELETE FROM TABLEB

ROLLBACK TRAN 

しかし、テーブルのデータを確認すると、データは存在します。

4

5 に答える 5

5

トランザクションをロールバックしている場合は、コミットされていない変更をキャンセルしています。トランザクションを開いて削除し、ロールバックすると、データが存在します。

トランザクションをコミットする (情報を削除する) 場合は、次のようにします。

BEGIN TRAN 

DELETE FROM TABLEA
DELETE FROM TABLEB

COMMIT TRAN 
于 2012-07-27T14:05:38.687 に答える
3

TRANSACTIONSQLServerでの説明は次のとおりです

トランザクションは単一の作業単位です。トランザクションが成功すると、トランザクション中に行われたすべてのデータ変更がコミットされ、データベースの永続的な部分になります。トランザクションでエラーが発生し、キャンセルまたはロールバックする必要がある場合、すべてのデータ変更が消去されます。

また、使用TRANSACTIONするとテーブルが一時的にロックされるため、注意が必要です。

 BEGIN TRAN 
    Statement1
    Statement2
 COMMIT TRAN

ステートメントの1つが失敗した場合、または何らかのエラーが発生した場合transactionrollbackすべてのステートメントが無視され、変更は行われません。

使用する場合は、使用開始以降に行ったROLLBACK TRANデータ変更をすべて消去してください。transactionCOMMIT TRAN

于 2012-07-27T14:34:20.577 に答える
1
BEGIN TRY
BEGIN TRAN   

DELETE FROM TABLEA 

DELETE FROM TABLEB  

COMMIT TRAN  
END TRY

BEGIN CATCH
 SELECT 
        ERROR_NUMBER() AS ErrorNumber
        ,ERROR_SEVERITY() AS ErrorSeverity
        ,ERROR_STATE() AS ErrorState
        ,ERROR_PROCEDURE() AS ErrorProcedure
        ,ERROR_LINE() AS ErrorLine
        ,ERROR_MESSAGE() AS ErrorMessage

 IF @@TRANCOUNT > 0
        ROLLBACK TRANSACTION
END CATCH

トランザクションに複数のアクションがある場合は、常に try-catch ブロックを使用してすべてをロールバックする必要があります。これは、トランザクションの一部が失敗した場合です。

于 2012-07-27T14:52:24.177 に答える
1

――まとめとして

BEGIN TRAN 

DELETE FROM TABLEA
DELETE FROM TABLEB

ROLLBACK/COMMIT TRAN

--ROLLBACK: ロールバックという名前で、処理をキャンセルします。

--COMMIT: commit という名前で、プロセスを確認します。

于 2013-10-11T06:34:17.880 に答える
1

交換

ROLLBACK TRAN 

COMMIT TRAN 

となり、データが削除されます。rollback tranトランザクションで行われたすべての変更をキャンセルすることを意味します。

于 2012-07-27T14:06:51.430 に答える