我实际上是在使用oracle SQL基础知识进行培训,并且我创建了一个类似于此的触发器(它可以工作!):</ p>
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字段?所以我不需要第二个变量。
您是否看到其他可以优化的内容?
答案 0 :(得分:0)
您可以使用联接,这样您只有一个查询而不是两个,并直接在:new.column_name
子句中使用into
:
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;