Oracle 11g触发器问题

时间:2014-05-05 10:55:30

标签: sql oracle triggers oracle11g

我是数据库的新手并尝试创建一个触发器,如果​​另一个表的元组设置为0,它会将字符从“Y”更改为“N”。我有一些工作但是它正在改变所有元组而不是我想要的那一个。这是触发器和代码。感激地收到任何建议。

create or replace TRIGGER CHANGE_STOCK_FLAG
AFTER UPDATE OF AMOUNT_REMAINING ON PRODUCT
FOR EACH ROW
BEGIN
UPDATE BOOK

SET IN_STOCK = 'N';

END;

更新声明:

UPDATE PRODUCT
SET AMOUNT_REMAINING = 0
WHERE PROD_ID = 5001;

触发器编译好了,在上面更新时,将Book表中所有元组的IN_STOCK重置为“N”。 是否有where子句或我可以使用的东西?

1 个答案:

答案 0 :(得分:1)

试试这个:

CREATE OR REPLACE TRIGGER CHANGE_STOCK_FLAG 
AFTER UPDATE OF AMOUNT_REMAINING ON PRODUCT 
REFERENCING NEW AS NEW OLD AS OLD 
FOR EACH ROW 
BEGIN 
IF (:NEW.AMOUNT_REMAINING=0) THEN
  UPDATE BOOK SET IN_STOCK = 'N' WHERE PROD_ID=:NEW.PROD_ID;
END IF;
END;