You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PLSQL触发器新增记录时插入当前日期时间报错PLS-00049如何解决?

错误原因

:NEW是Oracle触发器专属的绑定变量,仅代表触发器所挂载的RESERVATION表中刚刚新增的行数据。你当前代码错误地将RESERVATIONLOG表的字段LOG_DATE、STATUS加到了:NEW前缀后,但RESERVATION表本身不存在这两个字段,因此抛出绑定变量不存在的PLS-00049错误。
你尝试直接给:NEW.LOG_DATE赋值的操作也必然失败,本质还是在操作RESERVATION表不存在的字段。

修正后的触发器代码

你直接将日志需要的字段值填入INSERT语句即可:LOG_DATE直接取当前系统时间SYSDATE,STATUS取RESERVATION表新插入行的对应状态字段即可(如果你的RESERVATION表状态字段名不是STATUS,替换成实际字段名即可):

CREATE OR REPLACE TRIGGER AddReservationTrigger
AFTER INSERT ON RESERVATION
FOR EACH ROW
BEGIN
    INSERT INTO RESERVATIONLOG
        (RESERVATION_ID, LOG_DATE, STATUS)
    VALUES
        (:NEW.RESERVATION_ID, SYSDATE, :NEW.STATUS);
END;
/

这里也去掉了多余的变量声明和SYSDATE查询逻辑,直接在INSERT语句中赋值即可,代码更简洁。

内容的提问来源于stack exchange,提问作者krysznys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:36:03