首页 > 解决方案 > Oracle语句触发器无法访问表值

问题描述

尝试访问语句触发器中的表值时,出现以下错误“必须声明 ID XXX”。

桌子

CREATE TABLE testTable(
   id INT,
   store INT,
   amount NUMBER
);

扳机

CREATE OR REPLACE TRIGGER test_trigger
    AFTER INSERT OR UPDATE ON testTable
    DECLARE
       myID INT;
       myStore INT;
    BEGIN
        myID := id;
        myStore := store;

      IF amount < 3 THEN
         DBMS_OUTPUT.PUT_LINE('DANGER');
      END IF;

    END;

错误

PLS-00201: ID 'id' must be declared
PLS-00201: ID 'store' must be declared
PLS-00201: ID 'amount' must be declared

我是 oracle pl/sql 和触发器的新手,并且零线索如何解决这个问题。

标签: oracleplsqltriggers

解决方案


需要 :new 获取新记录或更新记录试试这个。

CREATE OR REPLACE TRIGGER test_trigger
    AFTER INSERT OR UPDATE
    ON testTable
DECLARE
    myID      INT;
    myStore   INT;
BEGIN
    myID := :new.id;
    myStore := :new.store;
    IF :new.amount < 3
    THEN
        DBMS_OUTPUT.PUT_LINE ('DANGER');
    END IF;
END;


  

推荐阅读