Derby创建自动填充日期的INSERT触发器报错:表/视图'NEW'不存在
解决Derby自动填充插入日期的触发器问题
我来帮你搞定这个Derby触发器的问题!你遇到的报错主要是触发器的时机和语法用错了,Derby在处理插入时自动赋值有特定的写法,我给你梳理清楚:
错误原因分析
- 触发器时机不对:你用了
AFTER INSERT,这时候新行已经被写入表中了,没法再通过NEW引用修改它;得用BEFORE INSERT,这样才能在插入行之前给字段赋值。 - 语法误用:Derby里不需要写
UPDATE NEW SET...这种语句,在BEFORE INSERT触发器里,直接给NEW对象的字段赋值就行。
正确的触发器语句
CREATE TRIGGER AddUserSessionDate BEFORE INSERT ON Usersession REFERENCING NEW AS NEW FOR EACH ROW MODE DB2SQL SET NEW.session_date = CURRENT_DATE;
简单说明
BEFORE INSERT:指定在插入操作执行前触发,这时候我们可以修改即将插入的行数据。SET NEW.session_date = CURRENT_DATE:直接把当前日期赋值给新行的session_date字段,不需要额外的UPDATE操作。
执行这个语句后,每次往Usersession表插入数据时,session_date字段都会自动填充为当前日期啦。
内容的提问来源于stack exchange,提问作者MadMax
相关产品推荐
相关产品推荐

