繁体   English   中英

Pl / SQL更新触发器根据表上的更新操作更新排名

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM