以下是我的触发器,我很难实施。它创建触发器,但是在我更改价格后出现错误。以下触发器是在表DAYCARE的任何行上都有价格更改(更新)时向DAYCARE_PRICE表添加一行。
CREATE OR REPLACE TRIGGER daycare_price_history_trg
BEFORE UPDATE ON DAYCARE
FOR EACH ROW
BEGIN
IF :NEW.price != :OLD.price THEN
INSERT INTO DAYCARE_PRICE(daycare_id, old_price, new_price, date_of_change)
SELECT daycare_id, :NEW.price, :OLD.price, SYSDATE
FROM DAYCARE;
END IF;
END;
答案 0 :(得分:1)
使用VALUES
子句,而不要从表(触发器所有者)中进行选择。
CREATE OR REPLACE TRIGGER daycare_price_history_trg BEFORE
UPDATE ON daycare
FOR EACH ROW
BEGIN
IF
:new.price !=:old.price
THEN
INSERT INTO daycare_price (
daycare_id,
old_price,
new_price,
date_of_change
) VALUES (
:new.daycare_id,
:old.price,
:new.price,
SYSDATE
);
END IF;
END;
/