oracle - 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 和触发器的新手,并且零线索如何解决这个问题。
解决方案
需要 :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;
推荐阅读
- environment-variables - 无法在 Gatsby 构建中设置其他环境变量
- angular - 组件调用多个 API 时只调用一次拦截器
- angular - 如何仅在 *ngFor 完成加载后调用函数?
- sql - sql 获取全面计数
- google-cloud-platform - gcloud sdk 无法通过 gs 链接找到文件
- android - 没有主构造函数,超类型初始化是不可能的
- php - 当我发送 POST 时,API 正在接收 GET 请求?
- javascript - 如何在某个日期之间从 mongoDB 获取数据(日期在我们的文档中存储为 createdOn)?
- javascript - 如何在 JavaScript 中对 HTML 画布进行填充?
- android - 使用不同的构建变体时 skuDetailsList 为空