我试图在每次更新 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;