Database 无法在日期列上添加默认的更新约束
我试图在每次更新sysdate时默认上次修改日期列的值。 当我运行DDL时,Oracle正在引发“缺少关键字”异常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
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中似乎没有更新,请参阅