使用触发器我在SOLDITEMS表中插入记录时尝试更新SOLD列(在STOCK表上),该表与使用STOCK表中现有BARCODE输入的BARCODE相匹配:
CREATE OR REPLACE TRIGGER SCOTT.stock_after_sold AFTER INSERT ON SCOTT.solditems
FOR EACH ROW
DECLARE
b SCOTT.solditems.barcode%type;
BEGIN
update SCOTT.stock set sold = :new.quantity where b = stock.barcode;
DBMS_OUTPUT.PUT_LINE('sold successfully inserted into stock table');
END stock_after_sold;
/
这不会更新列。
答案 0 :(得分:2)
这一行
b SCOTT.solditems.barcode%type;
只声明属性,但不用任何值初始化它,所以这一行
update SCOTT.stock set sold = :new.quantity where b = stock.barcode;
将stock.barcode与未初始化的值进行比较。
你不需要b,写下这样的更新行:
update SCOTT.stock set sold = :new.quantity where :new.barcode = stock.barcode;