我需要在满足特定条件时自动删除表中的行。还有其他类似问题,但我认为他们的答案不适用或已过时。
Anyhoo-
在我的数据库中,我有一个跟踪球员状态的表,每个球员都有一个基于“游戏”的合同。当他们签约时,他们根据合同选择了自己想玩的游戏数量,比方说20。在每次游戏之后,它都被打勾,直到达到零。在这里,我要删除该行。合同到期时。
据我所知,我有两种选择。
1)安排cron每天运行以将其删除。 2)每次更改后都要检查games_left col。
当然,对于1),它不是即时的,这不是理想的。对于2),似乎...好像必须有另一种更有说服力的方式来执行此任务。
我们正在使用MariaDB和SQL。
有人可以帮忙吗? :)
答案 0 :(得分:0)
您可以使用视图以使行不可见:
create view v_playerstats as
select ps.*
from playerstats ps
where ps.numgames > 0;
您可以通过此视图对数据进行所有访问。您甚至可以安排它,以便用户可以访问视图,但不能访问基础表。
然后,您可以在闲暇时删除行。
另一种方法是创建一个update
触发器-大概是在使用update
来减小值。值变为0时,触发器可以删除该行(或将其移到另一个表中)。
我实际上更喜欢第一种方法。如果您的数据库处于高峰期,则可以将delete
操作转移到更安静的时间。