比较 Oracle 上的日期和触发器 SQL

Compare Date with Trigger on Oracle SQL

我有一个 table 包含这些列:

我需要一个触发器来做这样的事情:

CREATE TRIGGER check_date
AFTER INSERT OR UPDATE ON tablename
FOR EACH ROW
BEGIN
        IF sysdate < DateFinVal
             set isCurrent = 1
        ELSE
             set isCurrent = 0
END;

我可以比较这些日期吗?使用触发器而不是视图或过程是个好主意吗?

日期绝对可以比较,但赋值是在 PL/SQL 中使用 := 完成的(而不是 set

如果要更改新插入行的值,必须使用 BEFORE 触发器:

CREATE TRIGGER check_date
BEFORE INSERT OR UPDATE ON tablename
FOR EACH ROW
BEGIN
  IF sysdate < :new.datefinval
    :new.iscurrent := 1;
  ELSE
    :new.iscurrent := 0;
  END IF;
END;
/

在线示例:https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=796347f1b5811448dddf2d0a532c2c2c

Sysdate 和 DateFinVal 是 DATE 类型,因此您可以比较它们。这取决于你需要这个触发器。