[英]Pl/ SQL update trigger to update the ranking upon an update operation on a table
给定table_player
Players. Score
A. 34
B. 45
C. 34
D. 20
我想使用一个更新触发器,当一个人的得分改变时,该触发器会自动更新玩家的排名,我也希望该排名列作为表中的新列保持不变。
这实际上不是触发器的好用,因为1)您必须从要插入的表中进行选择,并且2)每次插入新行时,都可能必须更新表中的所有行。 除非您创建一个非常复杂的方案来避免它们,否则这两个都可能导致数据错误变异。
但是,视图可以有效地完成同一件事。 唯一的区别是视图不存储数据,而是在您每次访问表时仅进行排名计算。 如果您的数据库支持分析功能,则将非常简单:
CREATE VIEW table_player_rank AS
SELECT player, score, rank() OVER (ORDER BY score) AS player_rank
FROM table_player;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.