Oracle SQL开发人员:触发器

问题描述:

Hello PL/SQL Experts!Oracle SQL开发人员:触发器

你知道我可以使用值“蝙蝠侠”在

INSERT INTO SUPERHEROES VALUES ('Batman'); 

所以我可以有下面的输出

1 row inserted. 

您加入蝙蝠侠

当我运行一个触发功能?我使用了下面的声明,但没有显示蝙蝠侠。先谢谢你! (注:我刚开始学习SQL)

这是一个代码:

CREATE OR REPLACE TRIGGER TRIG_SUPERHEROES 
BEFORE INSERT ON SUPERHEROES 
FOR EACH ROW 
ENABLE 
DECLARE 
    V_USER VARCHAR(20); 
    SH_NAME VARCHAR(20); 
BEGIN`enter code here` 
    SELECT USER INTO V_USER FROM DUAL; 
    DBMS_OUTPUT.PUT_LINE('YOU JUST ADDED NEW RECORD ' ||SH_NAME); 
END; 
+0

格式代码 –

你必须使用:new.sh_name

:old包含旧记录状态,:new包含for each row触发器中的新记录状态。

+0

非常感谢你!除此之外,如果在超级英雄表中已经存在new.sh_name,是否可以添加IF或存在条件?我的目标是在它插入超级英雄表之前,它会先检查它是否已经存在。否则,它不会被插入表 – Raymond

+0

“它将首先检查它是否已经存在”不要使用触发器,为表添加唯一的约束或主键而不是,这是做事的正确方法。 – APC