Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Co robi transakcja wokół pojedynczego wyciągu?

Nic nie robi. Wszystkie indywidualne instrukcje SQL (z rzadkimi wyjątkami, takimi jak wstawianie zbiorcze bez dziennika lub obcinanie tabeli) są automatycznie „w transakcji”, niezależnie od tego, czy wyraźnie to powiesz, czy nie... (nawet jeśli wstawiają, aktualizują lub usuwają miliony wierszy) .

EDYCJA:na podstawie poniższego komentarza @Phillip... W aktualnych wersjach SQL Server, nawet wstawki zbiorcze i obcinanie tabeli zapisują niektóre dane do dziennika transakcji, choć nie tak dużo, jak robią to inne operacje. Krytyczne rozróżnienie z perspektywy transakcyjnej polega na tym, że w przypadku tych innych typów operacji dane w modyfikowanych tabelach bazy danych nie znajdują się w dzienniku w stanie umożliwiającym ich wycofanie.

Wszystko to oznacza, że ​​zmiany wprowadzane przez oświadczenie do danych w bazie danych są rejestrowane w dzienniku transakcji, dzięki czemu można je cofnąć, jeśli operacja się nie powiedzie.

Jedyną funkcją, jaką zapewniają polecenia „Rozpocznij transakcję”, „Zatwierdź transakcję” i „Wycofaj transakcję”, jest umożliwienie umieszczenia dwóch lub więcej pojedynczych instrukcji SQL w tej samej transakcji.

EDYCJA:(aby wzmocnić komentarz do ocen...) TAK, można to przypisać "przesądnemu" programowaniu lub może to wskazywać na fundamentalne niezrozumienie natury transakcji bazodanowych. Bardziej dobroczynna interpretacja jest taka, że ​​jest to po prostu wynik nadmiernego stosowania spójności, która jest niewłaściwa, i kolejny przykład eufemizmu Emersona, który:

Głupia konsekwencja to hobgoblin małych umysłów,
wielbiony przez małych mężów stanu, filozofów i bogów



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać GROUP BY do łączenia ciągów w SQL Server?

  2. Funkcje TRIM, LTRIM i RTRIM programu SQL Server

  3. Konfigurowanie grup dostępności AlwaysOn na serwerze SQL Server

  4. Ogranicz połączenie SQL Server do określonego adresu IP

  5. Kopia zapasowa SQL Server 2017 -1