【问题标题】:Trigger to check logic date update触发检查逻辑日期更新
【发布时间】:2014-03-22 15:51:06
【问题描述】:

构建员工数据库,我们希望确保数据库不会因雇佣结束日期早于开始日期而错误地更新。我们想使用触发器来阻止更新、抛出错误和回滚。

我知道这是错误的,但这就是我所在的地方:

CREATE TRIGGER EmpLeaveWarn on Employee FOR UPDATE 
AS
    IF(select End_Date < Start_Date)
    BEGIN
        RAISERROR ('The End date must come after the Start date')
        ROLLBACK TRAN
        RETURN
    END
GO

对于 Microsoft SQL Server。

提前致谢。

【问题讨论】:

    标签: sql sql-server triggers


    【解决方案1】:

    不需要触发器,只需使用约束:

    alter table EmpLeaveWarn
        add constraint check_end_date check (End_Date >= Start_Date);
    

    【讨论】:

      【解决方案2】:

      实现这一目标的最简单方法是使用检查约束,而不是触发器:

      ALTER TABLE Employee ADD CONSTRAINT Employee_Date_Check CHECK ( End_Date >= Start_Date)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-18
        • 2017-02-28
        • 2018-12-05
        相关资源
        最近更新 更多