2016-05-26 5 views
0

Ich möchte diese SQL-Anweisung ausführen, aber ich bin nicht 100% sicher, ob es richtig funktioniert.Wie kann ich ein SQL-Update implementieren, das ich zurücksetzen kann?

MERGE [dbo].[Word] as target 
USING [dbo].[AWL] as source 
ON target.[WordId] = source.[col1] 
WHEN MATCHED THEN 
    UPDATE SET [AWL570Sublist] = col2; 

Gibt es eine Weise, die ich eine Transaktion starten kann, führen Sie den MERGE, überprüfen Sie es funktionierte und dann Rollback oder aus dem SQL-Abfragefenster begehen?

+2

Wonach fragen Sie? Alle (fast) Anweisungen können zurückgesetzt werden, wenn Sie sie in eine Transaktion einschließen. Fragen Sie nach 'BEGIN TRAN' /' ROLLBACK TRAN'? –

+1

Und was meinst du mit "check it works"? 'MERGE' ist atomar, was bedeutet, dass alle von ihm geworfenen Fehler einen Rollback –

Antwort

-1
BEGIN TRANSACTION 

MERGE [dbo].[Word] as target 
USING [dbo].[AWL] as source 
ON target.[WordId] = source.[col1] 
WHEN MATCHED THEN 
    UPDATE SET [AWL570Sublist] = col2; 

-- Other statements 

ROLLBACK TRANSACTION 

Beachten Sie, dass, wenn Ihre Handlungen Identitätsspalten verursachen den nächsten Identitätswert zu erhöhen, dann wird nicht das Rollback zurückgesetzt, um es zu Beginn des Transaktionswertes ist.

+0

verursachen und der Downvote ist, weil? –

1

Mit Rollback auf Fehler:

BEGIN TRAN 

    MERGE [dbo].[Word] as target 
    USING [dbo].[AWL] as source 
    ON target.[WordId] = source.[col1] 
    WHEN MATCHED THEN 
     UPDATE SET [AWL570Sublist] = col2; 

    IF (@@ERROR <> 0) BEGIN 
     PRINT 'Unexpected error occurred!' 
     ROLLBACK TRAN 
     RETURN 1 
    END 

COMMIT TRAN 
RETURN 0 

Gut article mit Erklärung.

0
BEGIN TRY; 
    BEGIN TRAN; 

     MERGE [dbo].[Word] as target 
     USING [dbo].[AWL] as source 
     ON target.[WordId] = source.[col1] 
     WHEN MATCHED THEN 
      UPDATE SET [AWL570Sublist] = col2; 

    IF @@ERROR = 0 
    BEGIN 
     COMMIT TRAN; 
    END 
    END TRY 
    BEGIN CATCH 
      SELECT @@ERROR AS ERROR, ERROR_MESSAGE() AS [Error Description] 
    ROLLBACK TRAN; 
    END CATCH 
Verwandte Themen