首页 > 解决方案 > 插入后触发以增加表

问题描述

我已经搜索了很多以前的问题,但我仍然不太了解。

我有一张桌子,nfl.games 和 nfl.teams。nfl.teams 有两列特别是保持运行总数

rushingyards
passingyards

当我将新游戏插入 nfl.games 时,其中有 6 列,

homerushingyards
homepassingyards
rivalpassingyards
rivalrushingyards
hometeamName
rivalteamName

hometeamName 和 CompetitionteamName 是我的团队表的外键。我试图创建的触发器是一个 AFTER INSERT 触发器,在 nfl.GAMES 表上进行插入后,它将为主队和对手球队获取冲球和传球码,并为该球队更新冲球和传球码在 nfl.TEAMS 表中。

老实说,我对 SQL 中的触发器很陌生,而且语法看起来很混乱,所以我想先尝试更新主队的冲球/传球码数。如果有人能指出我正确的方向,到目前为止我所想的大致是,

CREATE TRIGGER 'yardsUpdate' AFTER INSERT ON 'nfl.games' FOR EACH ROW
BEGIN
   teams.passingyards = teams.passingyards + games.homepassingyards;
   teams.rushingyards = teams.rushingyards + games.homerushingyards;
   WHERE teams.teamName = games.hometeamName;
END

我知道这种语法很不对劲,但我认为这是朝着正确方向迈出的一步。

谢谢

标签: sqloracletriggers

解决方案


看来您想要一个UPDATE团队表。为了引用 Trigger owner(nfl.games) 的列,请使用NEW伪记录

CREATE TRIGGER yardsupdate AFTER
     INSERT ON nfl.games
     FOR EACH ROW
BEGIN
     UPDATE nfl.teams t
     SET t.passingyards = t.passingyards +:new.homepassingyards,
         t.rushingyards = t.rushingyards +:new.homerushingyards
     WHERE t.teamname =:new.hometeamname;
END;
/

推荐阅读