满足条件时自动删除数据库行(SQL)

时间:2018-08-31 19:59:21

标签: php sql

我需要在满足特定条件时自动删除表中的行。还有其他类似问题,但我认为他们的答案不适用或已过时。

Anyhoo-

在我的数据库中,我有一个跟踪球员状态的表,每个球员都有一个基于“游戏”的合同。当他们签约时,他们根据合同选择了自己想玩的游戏数量,比方说20。在每次游戏之后,它都被打勾,直到达到零。在这里,我要删除该行。合同到期时。

据我所知,我有两种选择。

1)安排cron每天运行以将其删除。 2)每次更改后都要检查games_left col。

当然,对于1),它不是即时的,这不是理想的。对于2),似乎...好像必须有另一种更有说服力的方式来执行此任务。

我们正在使用MariaDB和SQL。

有人可以帮忙吗? :)

1 个答案:

答案 0 :(得分:0)

您可以使用视图以使行不可见:

create view v_playerstats as
    select ps.*
    from playerstats ps
    where  ps.numgames > 0;

您可以通过此视图对数据进行所有访问。您甚至可以安排它,以便用户可以访问视图,但不能访问基础表。

然后,您可以在闲暇时删除行。

另一种方法是创建一个update触发器-大概是在使用update来减小值。值变为0时,触发器可以删除该行(或将其移到另一个表中)。

我实际上更喜欢第一种方法。如果您的数据库处于高峰期,则可以将delete操作转移到更安静的时间。