Я создал триггер для регистрации всех обновленных строк либо одной или нескольких строк, либо журнала обновленных строк в другую таблицу. Триггер работает нормально с одной записью, но когда я обновляю всю таблицу, например: update TBL_ADM_USER_GROUP set name = '123'
регистрируется только одна запись в TBL_TestTable
? почему только одна строка записана в TBL_TestTable
и как включить этот триггер для регистрации всех обновленных строк?после триггера обновления для работы с несколькими строками
триггер:
CREATE TRIGGER [dbo].[Group_Update]
ON [dbo].[TBL_ADM_USER_GROUP]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @userid INT
DECLARE @name nvarchar(1000)
SELECT @userid = i.changer_user_id from inserted i;
select @name = i.name from inserted i;
INSERT INTO TBL_TestTable
VALUES (CONCAT('Group "' ,@name,'" is updated'), 'GROUP', 'Update', SYSDATETIME(), @userid)
END
Как сделать идентификатор пользователя равным changer_user_id, как показано в вопросе? – Saif
@Smart Вы не можете. '@ userid' является скалярной переменной и может содержать только одно значение в момент времени, поэтому, когда вы используете:' SELECT @userid = i.changer_user_id из вставленного i; 'вы получаете, вероятно, последнее значение из' вставленной' таблицы в зависимости от плана выполнения. – lad2025
то, что вы сказали, абсолютно верно, но как использовать объявленные параметры userid и name? – Saif