【问题标题】:Oracle SQL Developer: TriggerOracle SQL Developer:触发器
【发布时间】: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;

【问题讨论】:

  • 格式化代码

标签: plsql oracle11g


【解决方案1】:

你必须使用:new.sh_name

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

【讨论】:

  • 非常感谢!!!!除此之外,如果超级英雄表上已经存在 :new.sh_name ,是否可以添加 IF 或存在条件?我的目标是在它插入超级英雄表之前,它会首先检查它是否已经存在。否则,它不会被插入到表中
  • "它会首先检查它是否已经存在" 不要为此使用触发器,而是向表添加唯一约束或主键,这是做事的正确方法。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-26
  • 2018-04-04
  • 2015-05-13
相关资源
最近更新 更多