2013-09-26 12 views
15

Dokonałem aktualizacji mojego rekordu przez SQL Server Manager.Czy musimy wykonać instrukcję Commit po aktualizacji w SQL Server

Ponieważ instrukcja Update nie ma jawnego zatwierdzenia, próbuję napisać to ręcznie.

Update mytable 
set status=0; 
Commit; 

Dostaję wiadomość jako Zobowiązać się nie rozpocząć transakcję

+0

Należy rozpocząć transakcję przed popełnieniem. –

+2

Powinieneś otworzyć transakcję. Wewnątrz należy wykonać aktualizację, a następnie zatwierdzić zmiany. – lexeme

+0

Zobacz, jak to działa tutaj: http://www.codeproject.com/Articles/10223/Using-Transactions-in-ADO-NET – lexeme

Odpowiedz

30

SQL Server Management Studio ma niejawne zatwierdzenie włączone, więc wszystkie wykonywane polecenia są niejawnie zatwierdzane.

To może być przerażające, jeśli pochodzisz z tła Oracle, gdzie domyślnie nie ma poleceń automatycznie, ale nie stanowi to większego problemu.

Jeśli nadal chcą wykorzystywać transakcje ad-hoc, można zawsze wykonać

BEGIN TRANSACTION 

w SSMS i niż system czeka, aby zatwierdzić dane.

Jeśli chcesz replikować zachowanie Oracle i rozpocząć transakcję niejawna, gdy niektóre DML/DDL jest wydawane, można ustawić SET IMPLICIT_TRANSACTIONS wyboru w

Tools -> Options -> Query Execution -> SQL Server -> ANSI 
+2

Witam @SWeko. bardzo pomocne, thx. Czy mam rację, zakładając, że pole wyboru niezaznaczone oznacza, że ​​transakcje są dokonywane w sposób dorozumiany? To moja (domyślna) sytuacja. Nadawanie nazwy tego pola wyboru jest dziwne. btw, powiązany problem tutaj: http://stackoverflow.com/questions/17576649/safely-delete-rows-in-sqlserver-so-you-can-rollback-a-commit –

+0

Dziękujemy za odpowiedź – Patan

+0

Jeśli pole wyboru jest sprawdzone, a następnie instrukcja 'SELECT', niejawnie rozpoczyna transakcję, która musi zostać jawnie zatwierdzona. – SWeko

5

serwera SQL przeciwieństwie wyroczni nie potrzebują popełnia chyba używasz transakcji.
Natychmiast po wydaniu polecenia aktualizacji tabela zostanie zatwierdzona, nie należy używać polecenia commit w tym scenariuszu.

Powiązane problemy