插入后触发以递增表格

时间:2018-10-28 16:26:40

标签: sql oracle triggers

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

我有一张桌子,nfl.games和nfl.teams。  nfl.teams特别具有两列,它们使

rushingyards
passingyards

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

homerushingyards
homepassingyards
rivalpassingyards
rivalrushingyards
hometeamName
rivalteamName

hometeamName和竞争对手teamName是我的teams表的外键。我要创建的触发器是一个AFTER INSERT触发器,在nfl.GAMES表格上进行插入后,它将为主队和对手队使用冲球和传球码,并为THAT团队更新冲球和传球码。在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

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

谢谢

1 个答案:

答案 0 :(得分:0)

您似乎希望在团队表上使用UPDATE。为了引用触发器所有者(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;
/