Oracle SQL Developer:触发器

Posted

技术标签:

【中文标题】Oracle SQL Developer:触发器【英文标题】:Oracle SQL Developer: Trigger 【发布时间】:2017-09-23 19:20:52 【问题描述】:

PL/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;

【问题讨论】:

格式化代码 【参考方案1】:

你必须使用:new.sh_name

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

【讨论】:

非常感谢!!!!除此之外,如果超级英雄表上已经存在 :new.sh_name ,是否可以添加 IF 或存在条件?我的目标是在它插入超级英雄表之前,它会首先检查它是否已经存在。否则,它不会被插入到表中 "它会首先检查它是否已经存在" 不要为此使用触发器,而是向表添加唯一约束或主键,这是做事的正确方法。跨度>

以上是关于Oracle SQL Developer:触发器的主要内容,如果未能解决你的问题,请参考以下文章

Regexp_like 在调试器网站上工作,但不在 Oracle SQL Developer 上工作

使用 Apache Ant 而不是 Oracle SQL Developer 执行 SQL 时出错

我想不通的 Oracle SQL Developer SQL TRIGGER 创建问题

Oracle 触发器

PL/SQL Developer 替代方案 [关闭]

oracle中,用pl/sql创建触发器报触发器无效且未通过重新验证