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

PL/SQL触发器编译报错ORA-00904:PEOPLE.FLATNO无效标识符求助

问题排查与解决:ORA-00904无效标识符与触发器编译错误

错误原因

触发器代码中直接使用PEOPLE.FLATNO访问字段是核心错误。在Oracle行级触发器中,无法通过表名直接获取当前触发行的数据,必须使用:NEW(插入/更新后的新值)或:OLD(更新/删除前的旧值)伪记录来引用对应字段,否则数据库会因找不到有效标识符抛出ORA-00904错误。

修正后的触发器代码

SET SERVEROUTPUT ON;
CREATE OR REPLACE TRIGGER TUTU
BEFORE INSERT OR DELETE OR UPDATE ON PEOPLE
FOR EACH ROW
BEGIN
    IF INSERTING THEN
        UPDATE FLAT SET Status = 'Hired' WHERE FLAT.FLATNO = :NEW.FLATNO;
    END IF;

    IF DELETING THEN
        UPDATE FLAT SET Status = 'Not Hired' WHERE FLAT.FLATNO = :OLD.FLATNO;
    END IF;
END;
/

关键说明

  • INSERTING事件:用:NEW.FLATNO获取新插入的住户记录关联的公寓编号,更新对应公寓状态为已租用。
  • DELETING事件:用:OLD.FLATNO获取被删除住户原关联的公寓编号,将公寓状态改回未租用。
  • 若后续需要处理住户更换公寓的UPDATING事件,需同时更新:OLD.FLATNO(原公寓状态置为未租用)和:NEW.FLATNO(新公寓状态置为已租用)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:46:00