Published on

August 13, 2020

Вставка нескольких значений в несколько таблиц в SQL Server

Одним из часто возникающих вопросов при работе с SQL Server является вопрос о том, как вставить несколько значений в несколько таблиц в одном операторе. Хотя триггеры часто используются для этого сценария, существует альтернативный подход, который позволяет избежать использования триггеров полностью.

Ключом к достижению этого является использование оператора OUTPUT, который был введен в SQL Server 2005. Оператор OUTPUT позволяет захватить вставленные значения и перенаправить их в другую таблицу. Используя эту функцию, вы можете одновременно вставлять данные в несколько таблиц.

Давайте рассмотрим пример, чтобы лучше понять, как это работает:


-- Создание двух таблиц
CREATE TABLE Table1 (ID1 INT, Col1 VARCHAR(100))
GO
CREATE TABLE Table2 (ID2 INT, Col2 VARCHAR(100))
GO

-- Вставка в две таблицы одновременно
INSERT INTO Table1 (ID1, Col1)
OUTPUT inserted.ID1, inserted.Col1
INTO Table2
VALUES(1,'Col'), (2, 'Col2')
GO

-- Выборка из обеих таблиц
SELECT *
FROM Table1
GO
SELECT *
FROM Table2
GO

-- Очистка
DROP TABLE Table1
GO
DROP TABLE Table2
GO

При выполнении приведенного выше кода вы заметите, что в обеих таблицах Table1 и Table2 есть две строки. Это демонстрирует, как можно вставлять несколько значений в несколько таблиц с помощью одного оператора.

Понимая и используя оператор OUTPUT, вы можете избежать необходимости в триггерах и создавать системы без триггеров. Этот подход не только упрощает ваш код, но и улучшает общую производительность и поддерживаемость вашей базы данных.

Надеюсь, вы найдете этот блог полезным для понимания того, как вставлять несколько значений в несколько таблиц в SQL Server. Если у вас есть вопросы или вы знаете похожие трюки, не стесняйтесь делиться ими с нами. Оставайтесь на связи в LinkedIn для получения больше советов и трюков по SQL Server.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.