【发布时间】:2015-03-03 15:56:58
【问题描述】:
大家好,我正在尝试创建一个触发器,当表中的值低于某个值时,它会更新它们。
例如说我有表 Inventory:
Item | Quantity
-----|---------
A | 400
B | 160
C | 1200
D | 105
我想创建一个触发器,如果一个项目的数量应该低于 100,它将添加一个随机值 (100 - 200)。
这是我想出的:
CREATE OR REPLACE TRIGGER QuantityTrigger
AFTER
UPDATE ON INVENTORY FOR EACH ROW
BEGIN
IF :QUANTITY < 100 THEN
UPDATE INVENTORY
SET QUANTITY = QUANTITY + dbms_random.value(100,200);
END IF;
END;
但是这给了我错误:Error(2,9): PLS-00049: bad bind variable 'QUANTITY'
我做错了什么?任何建议表示赞赏。谢谢!
【问题讨论】:
-
去掉IF子句QUANTITY前面的:,oracle认为是输入(绑定)变量
-
尝试 :new.quantity 代替
-
现在进行更改,它给了我错误:
Error(2,9): PLS-00201: identifier 'QUANTITY' must be declared -
对不起,试试@Aramillo 刚才说的话
-
Aramillo 的更改使其编译成功。现在来测试一下。