Транзакции. Определение, свойства и уровни изоляции транзакций. Неблагоприятные

эффекты, вызванные параллельным выполнением транзакций, и способы их устранения. Управление транзакциями и способы обработки ошибок

Определение

Транзакция — это последовательность операций, выполняемая как единое целое. Транзакции нужны для поддержания целостности сущностей.

Свойства

https://habr.com/ru/post/555920/

Для поддержания целостности транзакция должна обладать четырьмя свойствами АСИД. Эти свойства называются также ACID-свойствами (in English):

Транзакции бывают…

По признаку определения границ различают:

Автоматические транзакции

Режим автоматической фиксации транзакций является режимом управления транзакциями по умолчанию. В этом режиме каждая инструкция T-SQL выполняется как отдельная транзакция. Если выполнение инструкции завершается успешно, происходит фиксация; в противном случае происходит откат. Если возникает ошибка компиляции, то план выполнения пакета не строится и пакет не выполняется.

CREATE TABLE Tab1 (
	Col1 int NOT NULL PRIMARY KEY,
  Col2 char(3)
);
INSERT INTO Tab1 VALUES (1, 'aaa');
INSERT INTO Tab1 VALUES (2, 'bbb');
INSERT INTO Tab1 VALUES (1, 'ccc'); -- Ошибка времени исполнения. Откат
SELECT * FROM Tab1; -- Возвращаются две строки.

Неявные транзакции Если соединение работает в режиме неявных транзакций, то после фиксации или отката текущей транзакции автоматически начинает новую транзакцию. В этом режиме явно указывается только граница окончания транзакции с помощью инструкций COMMIT TRANSACTION и ROLLBACK TRANSACTION.

CREATE TABLE Tab1 (
	Col1 int NOT NULL PRIMARY KEY,
	Col2 char(3) NOT NULL
);

-- Первая неявная транзакция, начатая оператором INSERT
INSERT INTO Tab1 VALUES (1, 'aaa');
INSERT INTO Tab1 VALUES (2, 'bbb');
COMMIT TRANSACTION; -- Фиксация первой транзакции

-- Вторая неявная транзакция, начатая оператором INSERT
INSERT INTO Tab1 VALUES (3, 'ccc');
SELECT * FROM Tab1;
COMMIT TRANSACTION; -- Фиксация второй транзакции