【问题标题】:SQL trigger that changes the wrong date更改错误日期的 SQL 触发器
【发布时间】:2016-09-02 18:47:28
【问题描述】:

如何在 Oracle 中创建 SQL 触发器,它将检查插入日期的日期和月份,如果不是 1 月 1 日,触发器会更新它?

例子:

CREATE TABLE Contract (
Ends_on DATE NOT NULL 
);

INSERT INTO Contract (Ends_on)
VALUES (TO_DATE('2017-1-30','yyyy-mm-dd'));

在这种情况下,日期应自动更改为“2017-1-1”

提前致谢

【问题讨论】:

  • 欢迎来到 SO!到目前为止,您的触发代码是什么,您有什么确切问题?
  • 为什么不只存储年份?

标签: sql database oracle date triggers


【解决方案1】:

触发器看起来像这样,使用带有第二个参数 'YEAR'TRUNC 函数:

CREATE OR REPLACE TRIGGER trg_ins_contract
    BEFORE INSERT ON Contract 
    FOR EACH ROW
BEGIN
    :new.Ends_on := TRUNC(:new.Ends_on, 'YEAR');
END;
/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 2023-03-20
    • 2014-02-19
    • 1970-01-01
    • 2011-08-22
    • 2014-10-09
    • 2021-09-08
    相关资源
    最近更新 更多