SQL Триггер вставленной таблицы - PullRequest
0 голосов
/ 09 мая 2020

Если я запустил следующий оператор select внутри триггера вставки, возможно ли, что он вернет более одного результата ?: DECLARE @variable char (1) = (SELECT ID FROM Insert) Если да, то что лучше справиться с этим?

Вот проблема, которую я пытаюсь решить: каждый раз, когда новая запись вставляется в таблицу, я хочу взять недавно вставленный идентификатор и вставить его в другую таблицу (если это не так. не существует).

Спасибо!

Ответы [ 2 ]

0 голосов
/ 09 мая 2020

Итак, я создал две таблицы: одну для главной таблицы, а другую - для Когда в этой главной таблице происходит вставка, эта запись должна быть вставлена ​​в другую таблицу.

CREATE TABLE tblEmployee
(
Id int Primary Key,
Name nvarchar(30),
Gender nvarchar(10),
DepartmentId int
)

CREATE TABLE tblEmployee_New
(
Id int Primary Key,
Name nvarchar(30),
Gender nvarchar(10),
DepartmentId int
)

Триггер:

CREATE TRIGGER TR_EMPLOYEEDETAILS_AFTEROFINSERT
ON TBLEMPLOYEE
AFTER INSERT
AS
BEGIN

TRUNCATE TABLE tblEmployee_New

INSERT INTO TBLEMPLOYEE_NEW(ID, NAME, GENDER, DEPARTMENTID)
SELECT ID, NAME, GENDER, DEPARTMENTID
FROM INSERTED 

END

Теперь давайте попробуем вставить в запись в главную таблицу

Insert into tblEmployee values (1,'John', 'Male', 3)
Insert into tblEmployee values (2,'Mike', 'Male', 2)

Он автоматически вставляет вновь вставленные записи в другую таблицу. Если вы хотите удалить предыдущие записи, добавьте оператор drop в этот триггер выше.

Примечание: вы также можете использовать #Temp Table вместо создания другой таблицы ('tblEmployee_New')

Kinldy Поделитесь своими комментариями

0 голосов
/ 09 мая 2020

Вместо

DECLARE @variable char(1) = (SELECT ID FROM inserted) 

Вы можете сделать что-то вроде следующего:

Declare @VarTempTbl as table (id int)

Insert into @VarTempTbl (id)
Select id from inserted

Чтобы вы могли получить эти значения для дальнейшей обработки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...