我是数据库的新手并尝试创建一个触发器,如果另一个表的元组设置为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子句或我可以使用的东西?
答案 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;