如何绘制触发触发器 pl/sql 的线?
Posted
技术标签:
【中文标题】如何绘制触发触发器 pl/sql 的线?【英文标题】:How to draw the line that triggered the trigger pl/sql? 【发布时间】:2017-05-30 07:55:45 【问题描述】:这是我的代码:
CREATE OR REPLACE TRIGGER TR_DEL
AFTER INSERT OR UPDATE
ON DIZIONARIO_CHIAVI_DA_ESCLUDERE
FOR EACH ROW
DECLARE
CURSOR c_cursore_prendi_riga IS
SELECT CURRICULUM_CHIAVE_RICERCA
FROM PERSONA;
myCursor PERSONA.CURRICULUM_CHIAVE_RICERCA%TYPE;
BEGIN
OPEN c_cursore_prendi_riga;
LOOP
FETCH c_cursore_prendi_riga INTO myCursor;
EXIT WHEN c_cursore_prendi_riga%NOTFOUND;
dbms_output.put_line('oo='|| myCursor );
-- Here I need it
END LOOP;
CLOSE c_cursore_prendi_riga;
END;
我需要启动触发器的行,谢谢
【问题讨论】:
您使用:new
或:old
伪记录来引用触发触发器的行的列/列。例如:new.col_name
.
有效!谢谢!
【参考方案1】:
尼古拉斯·克拉斯诺夫是对的,把这个放在答案中:
:new 和 :old 用作伪记录。文档在这里:
https://docs.oracle.com/database/121/TDDDG/tdddg_triggers.htm#TDDDG50000
这里是对这些伪记录的解释:
https://docs.oracle.com/database/121/LNPLS/triggers.htm#LNPLS99955
最重要的是:伪记录不能像“正常”记录那样使用。您必须为每一列命名...
例如你不能使用:
my_special_function(:new);
你必须创建一个“真实的”记录:
declare
myrec mytable%rowtype;
begin
myrec.id := :new.id;
myrec.name := :new.name;
myrec.birthdate := :new.birthdate;
etc etc etc
my_special_function(myrec);
end
【讨论】:
以上是关于如何绘制触发触发器 pl/sql 的线?的主要内容,如果未能解决你的问题,请参考以下文章