Database 无法在日期列上添加默认的更新约束

Database 无法在日期列上添加默认的更新约束,database,oracle,Database,Oracle,我试图在每次更新sysdate时默认上次修改日期列的值。 当我运行DDL时,Oracle正在引发“缺少关键字”异常 CREATE TABLE releaser_queue (id Number GENERATED BY DEFAULT ON NULL AS IDENTITY PRIMARY KEY, processed_date DATE, last_modified_date

我试图在每次更新sysdate时默认上次修改日期列的值。 当我运行DDL时,Oracle正在引发“缺少关键字”异常


CREATE TABLE releaser_queue  
    (id                            Number GENERATED BY DEFAULT ON NULL AS IDENTITY PRIMARY KEY,
    processed_date                 DATE,
    last_modified_date             DATE default on UPDATE sysdate, -- throwing exception
    created_date                   DATE default on null sysdate, 
    time_elapsed                   TIMESTAMP
    )


我希望创建该表,但Oracle在更新关键字时抛出ORA-00905缺少关键字异常,至少Oracle不支持更新时的默认值。但您可以在更新前使用
触发器来实现您的目标:

CREATE OR REPLACE TRIGGER RELEASER_QUEUE_BU
  BEFORE UPDATE ON RELEASER_QUEUE
  FOR EACH ROW
BEGIN
  :NEW.LAST_MODIFIED_DATE := COALESCE(:NEW.LAST_MODIFIED_DATE, SYSDATE);
END RELEASER_QUEUE_BU;

Oracle不支持更新时的默认值,至少不支持更新。但您可以在更新前使用
触发器来实现您的目标:

CREATE OR REPLACE TRIGGER RELEASER_QUEUE_BU
  BEFORE UPDATE ON RELEASER_QUEUE
  FOR EACH ROW
BEGIN
  :NEW.LAST_MODIFIED_DATE := COALESCE(:NEW.LAST_MODIFIED_DATE, SYSDATE);
END RELEASER_QUEUE_BU;

Oracle中似乎没有更新,请参阅Oracle中似乎没有更新,请参阅