SQL Server触发器将插入的事件日期与存在记录日期进行比较

时间:2018-05-15 00:01:17

标签: sql-server database-trigger

我正在使用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

不确定我在哪里出错,但Table1中的日期列对于具有相同父ID的记录组是相同的。

1 个答案:

答案 0 :(得分:0)

尝试声明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