Триггер SQL Server для изменения значения столбца вставленной строки в соответствии с дельтой из другой таблицы после вставки? - PullRequest
0 голосов
/ 10 декабря 2018

В моей базе данных SQL Server есть 2 таблицы, например [Camera] и [CameraData].Как написать триггер, который изменит значение в [CameraData] после вставки строки в [CameraData] из-за дельты в [Camera].

Например, у нас есть 2 камеры в [Camera]:

  • Камера 1 с {id} = 1 и {delta} = ноль
  • Камера 2 с {id} = 2 и {delta} = 3

Так что когдамы автоматизировали вставку в таблицу [CameraData], например:

Id_camera = 2, angle = 30, Changed = null 

В этом случае нам нужно проверить, есть ли у нас дельта в [Камера] на камере 2, и если это правда, нам нужно изменить вставку на:

Id_camera = 2, angle = 33 (angle + Camera.Delta), Changed = True

Обновление 1

Согласно комментарию [3] столбец в таблице [CameraData], где угол расположен

CREATE TRIGGER Delta_Angle
ON CameraData
AFTER INSERT
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE CameraData
    SET DeltaFlag = 1, [3] = inserted.[3] + i.DeltaAngle
    FROM CameraData h
    INNER JOIN Camera i ON h.ID_Camera = i.ID_Camera
    WHERE i.DeltaAngle != ''
END

1 Ответ

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

Это очень сильный удар в темноте, поскольку ваш пример SQL совсем не отражает данные, которые вы описываете в своем вопросе, однако, может быть что-то вроде:

CREATE TRIGGER Delta_Angle ON CameraData
AFTER INSERT AS
BEGIN
    SET NOCOUNT ON;

    UPDATE C
    SET Angle = C.Angle + i.delta
    FROM Camera
         JOIN inserted i ON C.CameraID = i.CameraID;
END

Обратите внимание, что я имею в виду inserted;твой триггер не был.Кроме того, я не уверен в вашей статье i.DeltaAngle != ''.Учитывая, что DeltaAngle представляется int, оно никогда не может иметь значение '' (однако '' будет неявно преобразовано в значение 0).

Если это не такНе помогу, я (опять же) предлагаю вам прочитать ссылку Шона и соответствующим образом обновить ваш пост.

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