我需要确保我的某个列的输入可以调用它CreationDate
is =<当前日期。
尝试使用此
失败后CHECK ( CreationDate =< GETDATE())
由于这篇文章中提到的原因: CHECK constraint on date of birth?
我想知道如何编写一个SQL Server触发器来检查我尝试插入/更新的日期是否为&lt; currentDate
我之前从未使用过触发器,我出来了,但我不确定它是否有效,或者它将如何被调用。 我试图让触发器返回错误,以便程序员被迫检查或修复它。
CREATE TRIGGER CheckValidDateTrigger
ON Reports
INSTEAD OF
UPDATE
AS
DECLARE @ReportCloseDate DateTime;
IF (@ReportCloseDate > GETDATE())
BEGIN
RAISERROR ('Error, the date your trying to save cannot be higher or newer that the current date. The date must be in the past or be the current date', -- Message text.
16, -- Severity.
1 -- State.
);
END;
你们能帮我一点吗?
答案 0 :(得分:1)
文档说任何表达式,其计算结果为TRUE或FALSE:
CHECK约束通过限制值来强制域完整性 被一列或多列接受。您可以创建CHECK约束 使用任何返回TRUE或FALSE的逻辑(布尔)表达式 关于逻辑运算符。
对于非确定性函数没有限制(据我所知)(即,在同一调用可能在不同时间返回不同值的函数上)。
您指向的示例标记为Oracle。它还提供了一种替代解决方案,即添加默认值为getdate()
的列,并对其进行检查。
因此,您的check
约束应该有效。