Триггер преобразует все остальные вставленные значения в ноль при запуске - PullRequest
0 голосов
/ 19 февраля 2019

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

ALTER TRIGGER [dbo].[FindOperatorHours]
ON [dbo].[tblTime]
INSTEAD OF INSERT
AS 
BEGIN  
  INSERT tblTime (SetHours)
    SELECT ISNULL(INSERTED.SetHours, tblUser.OperatorHours) AS SetHours
    FROM INSERTED
    JOIN tblUser ON INSERTED.Operator = tblUser.UserID
END

Это охватывает все данные, кроме SetHours, до NULL при повторном открытии таблицы, однако значение было выбрано правильно?Возможно ли получить это для обновления в реальном времени, а не преобразовать мои данные в ноль?

1 Ответ

0 голосов
/ 19 февраля 2019

Это вставка новых строк, поэтому вам нужно включить все столбцы:

ALTER TRIGGER [dbo].[FindOperatorHours]
ON [dbo].[tblTime]
INSTEAD OF INSERT
AS 
BEGIN  
  INSERT tblTime ( . . . , SetHours)
    SELECT . . ., COALESCE(i.SetHours, tblUser.OperatorHours) AS u
    FROM INSERTED i JOIN
         tblUser u
         ON i.Operator = u.UserID;
END;

Включить все остальные столбцы в . . ..

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