【发布时间】:2017-04-21 23:48:23
【问题描述】:
我正在编写一个触发器,它替换插入到我的Appointments 表的dates(类型为DATE)列中的任何NULL 值。但我不知道如何插入当前日期。
我的触发代码:
CREATE OR REPLACE TRIGGER appointment_date_insert
BEFORE INSERT
ON appointments
FOR EACH ROW
WHEN (NEW.dates IS NULL)
BEGIN
:NEW.dates := NOW();
END;
/
上面给了我编译器日志中的错误:
NOW() 必须声明
我也尝试使用 GETDATE() 而不是 NOW(),但它在编译器日志中给出了与上面相同的错误。
为了测试此触发器,我的示例INSERT 查询与NULL 的dates 列值如下:
INSERT INTO appointments
VALUES (1, 'John', 'Doe', NULL);
我的appointments 表只有 4 列:patient_ID、first_name、last_name 和 dates
理想情况下,最终结果应该在appointments 表中插入一个新行,如下所示:
1 |约翰 |能源部 | 04-21-2017
用当前日期替换NULL 值
编辑:我不允许更改任何原始表结构,包括 DEFAULT 值,否则我一开始就不需要问这个问题....
【问题讨论】:
-
能否修改表格,让日期字段的默认值为getdate()?
-
没有。不允许更改任何原始表格。必须使用触发器。
-
在 Oracle 中,我们使用
SYSDATE来获取当前日期::new.dates := sysdate;
标签: sql oracle date plsql triggers