如果某些列为空,则自动删除行?

时间:2012-05-25 21:38:08

标签: mysql triggers

我有一个包含研究参与者联系信息的数据库:homePhone,altPhone和email。

我们通过保留日志表来检查数据库中的参与者。每次参与者都被批量检入,我通过我编写的Java应用程序运行它,如果需要,也可以更新/删除联系信息。

当参与者的3条联系信息中有0条时,将它们保存在数据库中是没用的。而不是在我的Java程序中实现检查,有没有办法让数据库(在MySQL上运行)自动执行此操作?我试图在UPDATE创建一个检查3列的触发器,但我在网上读到你不能改变与触发器相关联的表?

我知道我可以跑:

DELETE FROM participants WHERE homePhone=0 AND altPhone=0 AND email=''

但我希望数据库自动执行此操作。我不是一个数据库大师,所以如果有人有任何洞察力会很棒。最糟糕的情况是在我的Java程序结束时实现上面的SQL行。

2 个答案:

答案 0 :(得分:1)

您可以将该查询放在每个INSERT INTO或UPDATE语句中调用的trigger上。

答案 1 :(得分:0)

如果你正在使用MySQL 5.1.6+,你可以使用MySql事件调度程序。

Using the Event Scheduler