触发器 - 将 SELECT Result 直接写入 :new.field
Posted
技术标签:
【中文标题】触发器 - 将 SELECT Result 直接写入 :new.field【英文标题】:Trigger - Write SELECT Result directly into :new.field 【发布时间】:2017-05-21 07:52:00 【问题描述】:我实际上正在接受 oracle SQL 基础知识的培训,并且我创建了一个看起来像这样的触发器(它有效!):
create or replace TRIGGER insert_refereenation
BEFORE INSERT OR UPDATE ON Game
FOR EACH ROW
DECLARE
v_nation_id NUMBER(4) := '';
v_nationname VARCHAR2(100) := '';
BEGIN
SELECT Nation_id
INTO v_nation_id
FROM referre
WHERE referee_id= :new.referee_id;
SELECT Name
INTO v_nationname
FROM Nation
WHERE Nation_id = v_nation_id;
:NEW.referee_nation_name:= v_nationname;
END;
这个触发器工作正常,但我有两个简单的问题:
是否可以将第二个 SELECT 的结果直接写入:NEW.referee_nation_name 字段?所以我不需要第二个变量。
您还看到其他可以优化的东西吗?
【问题讨论】:
【参考方案1】:您可以使用连接,这样您就只有一个查询而不是两个,并在into
子句中直接使用:new.column_name
:
SELECT n.name
INTO :new.referee_nation_name
FROM referee r
JOIN nation n ON r.nation_id = n.nation_id
WHERE r.referee_id = :new.referee_id;
【讨论】:
以上是关于触发器 - 将 SELECT Result 直接写入 :new.field的主要内容,如果未能解决你的问题,请参考以下文章
HTML Select Option选择后触发jQuery事件代码实例