我想在更新另一个表时更改表中所有行的字段。
我有一张游戏桌,一张裁判表(带有nation_id)和国家名单。
现在我想自动更新游戏表中的referee_nation_Name,如果有人更新裁判表中的nation_id。
我的问题是我不知道如何获取referee_id(这是唯一的),当有人更新此表中的nation_id。如果我选择所有referee_id它们是这样的:我new.nation_id会得到人民的其他裁判IDS谁生活在这个国家......这里是我的非工作触发:ORACLE TRIGGER更新表,如果另一个更新
CREATE OR REPLACE TRIGGER name
AFTER UPDATE OF nation_id ON referee
FOR EACH ROW
DECLARE
nationname VARCHAR2(150);
BEGIN
SELECT n.name INTO nationname
FROM nation n, referee r, game g
WHERE n.nation_id = r.nation_id AND g.referee_id = :old.referee_id);
UPDATE game SET referee_nation_Name = nationname WHERE referee_id = :old.referee_id;
END;
为什么你首先在“裁判”表中存储国家的名字?你的数据模型应该正确的标准化。所以如果你已经有了一个已经存储的“国家”表,那么你不应该存储裁判国的名字。 – 2013-05-02 21:51:38
我知道,但它是为了学校。所以我必须这样做...... ^^ – user1069968 2013-05-02 21:54:26
你在你的select语句中缺少连接条件(如果你使用明确的'JOIN'则不会发生) – 2013-05-02 22:12:03