触发检查逻辑日期更新

Posted

技术标签:

【中文标题】触发检查逻辑日期更新【英文标题】: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。

提前致谢。

【问题讨论】:

【参考方案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)

【讨论】:

以上是关于触发检查逻辑日期更新的主要内容,如果未能解决你的问题,请参考以下文章

更新后更新触发器逻辑

Oracle 触发器检查一个表中的课程持续时间,如果课程是特定日期,则阻止更新

无法理解汇编逻辑

mysql 数据库的更新逻辑问题

时序逻辑电路基础

PL/SQL 创建一个根据日期范围检查 SYSDATE 的触发器