Транзакции являются неотъемлемой частью управления целостностью данных в SQL Server. Они позволяют пользователям группировать несколько операций с базой данных в единицу логики, гарантируя, что все изменения будут либо зафиксированы, либо отменены в целом. В предыдущей статье мы обсудили, как найти открытые транзакции для сеанса с помощью функции @@TRANCOUNT. Сегодня мы погрузимся глубже в концепцию вложенных транзакций.
SQL Server позволяет пользователям создавать несколько вложенных транзакций. Однако важно отметить, что термин “вложенные транзакции” может ввести в заблуждение. На самом деле, наше понимание того, как работают транзакции, может отличаться от того, как они действительно функционируют.
В быстром видео я объясняю, как ведут себя транзакции при вложении. Давайте посмотрим на скрипт, используемый в видео:
USE SQLAuthority;
GO
CREATE TABLE T1 (ID1 INT);
CREATE TABLE T2 (ID2 INT);
CREATE TABLE T3 (ID3 INT);
GO
SELECT (SELECT ID1 FROM T1) AS T1,
(SELECT ID2 FROM T2) AS T2,
(SELECT ID3 FROM T3) AS T3;
GO
BEGIN TRAN Level1;
INSERT INTO T1 (ID1) VALUES (1);
BEGIN TRAN Level2;
INSERT INTO T2 (ID2) VALUES (2);
BEGIN TRAN Level3;
INSERT INTO T3 (ID3) VALUES (3);
COMMIT TRAN Level3;
COMMIT TRAN Level2;
ROLLBACK TRAN Level1;
GO
SELECT (SELECT ID1 FROM T1) AS T1,
(SELECT ID2 FROM T2) AS T2,
(SELECT ID3 FROM T3) AS T3;
В скрипте мы сначала создаем три примерные таблицы: T1, T2 и T3. Затем мы извлекаем данные из этих таблиц с помощью вложенных операторов SELECT. Затем мы создаем вложенную структуру транзакций, начиная с Level1, затем Level2 и, наконец, Level3. Внутри каждого уровня мы вставляем данные в соответствующую таблицу.
Теперь вот интересный эксперимент, который вы можете попробовать. Измените операторы COMMIT на ROLLBACK и наблюдайте, как реагирует запрос. Это поможет вам понять поведение вложенных транзакций при их откате.
После выполнения скрипта мы снова извлекаем данные, чтобы увидеть изменения, внесенные транзакциями. Наконец, мы очищаем примерные таблицы.
Транзакции – это мощный инструмент в SQL Server, позволяющий поддерживать целостность данных и контролировать результаты нескольких операций с базой данных. Понимание того, как работают вложенные транзакции, может помочь вам проектировать более надежные и эффективные системы баз данных.
Вот и все на сегодня. Если вам понравилась эта статья, пожалуйста, подпишитесь на мой канал YouTube, чтобы получать больше информативного контента.