Secondo MSDN: la sintassi è commit:COMM_ Sql COMMIT senza Tran | Transazione?
Tuttavia quando ho omettere le tran
/transaction
parole - lo fa compilare ed eseguire senza errori.
Come può funzionare?
Altra cosa fa invece qualcos'altro?
Secondo MSDN: la sintassi è commit:COMM_ Sql COMMIT senza Tran | Transazione?
Tuttavia quando ho omettere le tran
/transaction
parole - lo fa compilare ed eseguire senza errori.
Come può funzionare?
Altra cosa fa invece qualcos'altro?
L'IMPEGNO in questione non è effettivamente COMMIT che si pensa. Vedi COMMIT WORK
COMMIT [LAVORO] [; ]
Osservazioni
Questa affermazione funzioni in modo identico a commettere operazione tranne COMMIT TRANSACTION accetta un nome di transazione definita dall'utente. Questa sintassi COMMIT, con o senza la specifica parola chiave WORK, è compatibile con SQL-92.
Così COMMIT
per sé è COMMIT WORK
che è identico al COMMIT TRANSACTION
.
Idem per ROLLBACK [ WORK ]
Dopo commento,
BEGIN TRANSACTION gbn
SELECT 1
COMMIT gbn -- fail
GO
BEGIN TRANSACTION gbn
SELECT 2
COMMIT TRAN gbn -- works
GO
IF @@TRANCOUNT > 0
obiettivi controllando c'è (almeno) uno in attesa di operazione - se deve essere utilizzato sia con ROLLBACK
e COMMIT
come l'esecuzione di queste istruzioni senza avere alcuna transazione aperta genererà un errore
'tranne COMMIT TRANSACTION accetta un nome transazione definito dall'utente' .... ma non gli ho dato il nome della Transazione ... questo è il problema. + Non sto parlando della parola chiave 'WORK'. Sto parlando di commit vs commit trans. –
@Royi Namir: no, COMMIT significa da solo COMMIT WORK. Niente a che vedere con una transazione con nome: se lo hai nominato, non lo hai menzionato nella tua domanda. E con un nome, dovresti usare esplicitamente 'COMMIT TRANSACTION SomeName' o' COMMIT TRAN SomeName'. * Non * COMMIT di per sé – gbn
Quindi, se non utilizzo alcuna transazione denominata, posso sempre usare Commit da solo. destra ? –