SQL Trigger после вставки обновить другую таблицу - PullRequest
0 голосов
/ 21 декабря 2018

Я хочу обновить сущность в таблице после того, как вставка сделана в другую таблицу.Здесь мой текущий триггер, который не работает.

ALTER TRIGGER [dbo].[UpdateLastValues]  
ON [dbo].[MeasureValues] FOR INSERT   
AS BEGIN

SET NOCOUNT ON;

DECLARE @MyValue AS nvarchar;
DECLARE @MyTimestamp AS datetimeoffset;
DECLARE @MyId AS nvarchar;

SELECT @MyValue = Value FROM INSERTED;
SELECT @MyTimestamp = Timestamp FROM INSERTED;
SELECT @MyId = MeasurePointId FROM INSERTED;

UPDATE [dbo].[MeasurePoints] SET  [dbo].[MeasurePoints].[LastValue] = @MyValue, [dbo].[MeasurePoints].[LastEdit] = @MyTimestamp WHERE [dbo].[MeasurePoints].[Id] = @MyId
END

Measure Values ​​получают новые значения.Последние значения должны быть сохранены в столбце MeasurePoints LastValue.

1 Ответ

0 голосов
/ 21 декабря 2018

Измените триггер с FOR INSERT на AFTER INSERT.

Кроме того, я внес некоторые изменения в код для удаления ненужных кодов

ALTER TRIGGER [dbo].[UpdateLastValues]  
ON [dbo].[MeasureValues] AFTER INSERT   
AS BEGIN

SET NOCOUNT ON;

UPDATE MP
    SET
        LastValue = INSERTED.[Value],
        LastEdit = INSERTED.[Timestamp]
    FROM [dbo].[MeasurePoints] MP
        INNER JOIN Inserted
            ON MP.id = Inserted.MeasurePointId

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