Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Какво прави транзакцията около едно изявление?

Не прави нищо. Всички отделни SQL изявления (с редки изключения като групови вмъквания без регистрационен файл или съкращаване на таблица) автоматично са "в транзакция", независимо дали го кажете изрично или не... (дори ако вмъкват, актуализират или изтриват милиони редове) .

РЕДАКТИРАНЕ:въз основа на коментара на @Phillip по-долу... В текущите версии на SQL Server дори груповите вмъквания и съкращаването на таблицата пишат някои данни в регистъра на транзакциите, макар и не толкова, колкото другите операции. Критичното разграничение от гледна точка на транзакциите е, че при тези други типове операции, данните в таблиците на вашата база данни, които се променят, не са в регистрационния файл в състояние, което позволява да бъдат върнати обратно.

Всичко това означава, че промените, които изявлението прави в данните в базата данни, се записват в регистъра на транзакциите, за да могат да бъдат отменени, ако операцията не успее.

Единствената функция, която предоставят командите „Започване на транзакция“, „Завършване на транзакция“ и „Отмяна на транзакция“ е да ви позволи да поставите два или повече отделни SQL оператора в една и съща транзакция.

РЕДАКТИРАНЕ:(за подсилване на коментара...) ДА, това може да се дължи на "суеверно" програмиране или може да е индикация за фундаментално неразбиране на естеството на транзакциите в базата данни. По-благотворително тълкуване е, че това е просто резултат от прекомерно прилагане на последователност, което е неподходящо и още един пример за евфемизъм на Емерсън, който:

Глупавата последователност е хобита на малките умове,
обичана от малки държавници, философи и богове



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL грешка с подреждане по в подзаявка

  2. 3 начина за връщане на редове, които съдържат буквено-цифрови знаци в SQL Server

  3. Как да извадите нулеви DateTime от базата данни

  4. Изхвърлете всички таблици, съхранени процедури, тригери, ограничения и всички зависимости в един оператор sql

  5. SQL Server на Linux