伪记录的约束¶
伪记录不能出现在记录级的操作中
伪记录不能作为子程序的实参,但是伪记录的值可以
触发器不能改变OLD的值
如果触发器语句是DELETE,那么触发器不能更改NEW的值
由于AFTER触发器的触发器语句先于触发器激活前运行,因此AFTER触发器不能更改NEW的值。
BEFORE触发器可以在触发器通过INSERT或UPDATE语句将数据放入表之前更改NEW的值。
如果一个触发器既是BEFORE触发器优势AFTER触发器,而BEFORE触发器更改了NEW的值,那么AFTER触发器也会得到通知。
示例:
CREATE TABLE TEST2(A INT);
CREATE OR REPLACE TRIGGER TESTTRIGGER
BEFORE UPDATE ON TEST2
FOR EACH ROW
DECLARE
V_ID INT;
V_SQL VARCHAR(500);
BEGIN
IF :OLD.A = 1 THEN
DBMS_OUTPUT.PUT_LINE(':OLD.A');
END IF;
IF :NEW.A = 2 THEN
DBMS_OUTPUT.PUT_LINE(':NEW.A');
END IF;
END;
/
INSERT INTO TEST2 VALUES(1);
UPDATE TEST2 SET A =2 WHERE A = 1;
--执行结果为:
:old.a
:new.a