0

我需要确保我的列之一的条目可以调用它CreationDate是 =< 当前日期。

尝试使用此功能失败后

CHECK ( CreationDate =< GETDATE())

由于这篇文章中提到的原因: CHECK 对出生日期的约束?

我想知道如何为 SQL Server 编写一个触发器来检查我尝试插入/更新的日期是否 =< 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;

你们能帮帮我吗?

4

1 回答 1

1

文档说任何计算结果为 TRUE 或 FALSE 的表达式:

CHECK 约束通过限制一个或多个列接受的值来强制域完整性。您可以使用基于逻辑运算符返回 TRUE 或 FALSE 的任何逻辑(布尔)表达式创建 CHECK 约束。

对非确定性函数(即同一调用可能在不同时间返回不同值的函数)没有限制(据我所知)。

您指向的示例标记为 Oracle。它还提供了另一种解决方案,即添加一个默认值为 is 的列getdate()并对其进行检查。

因此,您check的预期约束应该有效。

于 2013-04-25T20:32:54.533 回答