0
recid  | EffectiveFrom | EffectiveTo
------------------------------------
   1   | 2012-11-25    | 2012-11-30
   2   | 2012-11-26    | null

effectivefrom新しい日付が と の間でeffectiveTo 挿入を停止するかどうかをチェックするトリガーが必要です。

4

1 に答える 1

0

これを試して :

USE {yourDB}; 

CREATE TRIGGER insertRecord ON {tblName}
INSTEAD OF INSERT
AS
BEGIN
    DECLARE @EffectiveFrom DATE;
    DECLARE @EffectiveTo DATE;
    DECLARE @newDate DATE;
    SET @newDate = GETDATE();  -- DATE WHICH YOU WANT TO CHEK
    SELECT @EffectiveFrom = EffectiveFrom FROM INSERTED;
    SELECT @EffectiveTo = EffectiveTo FROM INSERTED;

    IF (@newDate > @EffectiveFrom AND @newDate < @EffectiveTo)
        BEGIN
        INSERT INTO [{yourDB}].[dbo].[{tblName}] 
        SELECT * FROM INSERTED;
        PRINT 'DATA SUCCESSFULLY ADDED.'
        END
    ELSE PRINT 'ERROR : DATE IS NOT IN BETWEEN EffectiveFrom and EffectiveTo DATE'
END


INSERT INTO [{yourDB}].[dbo].[{tblName}] VALUES(CAST('24-NOV-2012' AS DATE),CAST('30-NOV-2012' AS DATE))

メッセージ --result エラー: 日付が有効な日付と有効な日付の間にありません

INSERT INTO [{yourDB}].[dbo].[{tblName}] VALUES(CAST('24-NOV-2012' AS DATE),CAST('02-DEC-2012' AS DATE))

メッセージ -- 結果 (1 行が影響を受ける) データが正常に追加されました。

于 2012-11-30T07:15:18.133 に答える