【发布时间】:2015-11-09 00:17:39
【问题描述】:
我需要更改 Product 表以具有 varchar2(3) 重新订购列,并修改注释中的语句级别触发器以将产品重新订购字段设置为“是”,如果手头数量小于产品最小值的两倍数量或现有数量少于 10 个。否则,该值应为“否”。在插入或更新 p_min 或 p_qoh 后触发触发器。通过事先检查数据、进行更改、然后检查来进行调试。
为此我有
CREATE or REPLACE TRIGGER
TRG_Product_Reorder
AFTER INSERT OR UPDATE of P_min, P_qoh ON lab9_Product
BEGIN
UPDATE lab9_Product SET REORDER = 'yes'
WHERE P_qoh < P_min*2 or p_qoh < 10;
UPDATE lab9_Product SET REORDER = 'no'
WHERE P_qoh >= p_min*2;
END;
/
我得到错误:
SQL statement ignored
"REORDER": invalid identifier
【问题讨论】:
-
“REORDER”是您要更新的列的名称吗?如果是,它是否存在于“lab9_Product”表中?
-
您不能在表中创建触发器来自我更新!您可以做的是更改当前更新或插入行的列的值!认为 IF 允许您以无限循环结束它,因为新的更新会再次调用触发器!
-
您执行的将
REORDER列添加到LAB9_PRODUCT表的语句是什么样的? -
嗯好吧,你是对的,我之前确实忘记将 REORDER 添加为列。语句添加 REORDER = ALTER TABLE Lab9_Product ADD REORDER varchar2(3) default 'No'
标签: sql oracle plsql triggers compiler-errors