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



我试图在每次更新 sysdate 时默认last_modified_date列的值。 甲骨文在我运行DDL时抛出"缺少关键字"异常。


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 在 UPDATE 关键字上抛出 ORA-00905 缺少关键字异常

Oracle不支持DEFAULT ON UPDATE,至少到版本19c。但是,您可以使用BEFORE UPDATE触发器来实现目标:

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;

最新更新