oracle中触发器问题

来源:百度知道 编辑:UC知道 时间:2024/06/02 20:40:51
CREATE OR REPLACE TRIGGER BI_WARE_STOCK2
BEFORE DELETE
ON WARE_STOCK
FOR EACH ROW
DECLARE COUNTS INT;
BEGIN
SELECT W_STO.N_STOCK_COUNTS INTO COUNTS
FROM WARE_STOCK W_STO WHERE :NEW.VC_WARE_ID = W_STO.VC_WARE_ID
AND W_STO.VC_DOCUMENT_ID = :NEW.VC_DOCUMENT_ID;
END;

对一个表建触发器时如何在该触发器中获取表中以前的数据?
急!
盼高人指点!

你是想获取被删除的数据么?如果是它是放在 old 里面的。

例如:
--创建一个delete类型行级触发器
--删除的一行数据保存在:old
create or replace trigger emp_delete_row_trigger
after delete
on emp
referencing new as n old as o
for each row
begin
dbms_output.put_line('emp_delete_row_trigger called.');
dbms_output.put_line('删除员工:' || :o.empno || ' ' || :o.ename);
end;

说明:
【referencing new as n old as o】是给【new】和【old】起别名,下面引用的【:o.empno】就是被删除的那条记录的 【empno】

---
以上,希望对你有所帮助。

就是在触发器就使用“:old.列名”来获取值
看你的select语句中怎么会有:NEW.VC_WARE_ID
对于delete触发来说,是没有:new这个值的
同理对于insert来说,是没有:old的

对于你是删除行触发,没什么新旧之分啊,update才有。