伪记录的约束

伪记录不能出现在记录级的操作中

伪记录不能作为子程序的实参,但是伪记录的值可以

触发器不能改变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