Триггер SQL Server сравнивает вставленную дату события с датой существования записей - PullRequest
0 голосов
/ 15 мая 2018

У меня есть триггер SQL Server, над которым я работаю, и не могу получить вставленную дату для сравнения со столбцом даты, который я настроил в другой таблице. Вот триггер, над которым я работаю:

CREATE TRIGGER TRIGNAME 
ON TABLE 
FOR INSERT
AS
BEGIN
    DECLARE @REC INT   

    SELECT @REC = COUNT(*) 
    FROM INSERTED I    
    WHERE I.ID IS NOT NULL        
      AND I.COL2 = 'TEST'

    IF (@REC > 0)
    BEGIN
        SELECT @REC = COUNT(*) 
        FROM INSERTED I                 
        WHERE I.DATE > (SELECT DISTINCT S.DATE FROM TABLE1 S 
                        WHERE I.PARENT_ID = S.PARENT_ID)

        IF (@REC > 0)
        BEGIN
            UPDATE STATEMENT HERE
        END
    END

Не знаю, где я ошибаюсь, но столбец даты из Таблицы 1 одинаков для группы записей с одинаковым родительским идентификатором.

1 Ответ

0 голосов
/ 15 мая 2018

Попробуйте объявить переменную DATETIME для хранения значения Table1.Date. Тогда сделайте сравнение. И это может быть только я, но мне нравится использовать вставленную таблицу всеми строчными буквами.

CREATE TRIGGER TRIGNAME 
ON TABLE 
FOR INSERT
AS
BEGIN
    DECLARE @REC INT   
    DECLARE @MyDate DateTime

    SET @MyDate = (SELECT DISTINCT S.DATE FROM TABLE1 S 
                    INNER JOIN inserted ON inserted.PARENT_ID = S.PARENT_ID)

    SELECT @REC = COUNT(*) 
    FROM INSERTED I    
    WHERE I.ID IS NOT NULL        
      AND I.COL2 = 'TEST'

    IF (@REC > 0)
    BEGIN
        SELECT @REC = COUNT(*) 
        FROM INSERTED I                 
        WHERE I.DATE > @MyDate

    IF (@REC > 0)
    BEGIN
        UPDATE STATEMENT HERE
    END
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...