我有一个存储一些敏感信息的表,但我希望这些信息在超过24小时时更改为NULL。我怎样才能做到这一点?我有一个名为“last_updated”的列,并存储类似“2014-02-26 16:25:58”的值。
如何将last_updated值与当前时间进行比较,如果超过24小时,则另一个字段将更改为“NULL”。
我应该放一些像UPDATE table SET info=NULL WHERE last_updated > 24hour?
这样的东西我不知道如何比较24小时后的last_updated。
或者MySQL内部是否有一个函数可以自动检查而无需使用phpmyadmin运行查询?
答案 0 :(得分:2)
您可以使用重置数据的预定作业执行此操作。当然,如果你每天只运行一次工作,那么时间跨度将是24-48小时。
还有另一种选择。那就是通过视图进行所有数据访问。然后视图可以说:
create view v_table as
select (case when last_updated > now() - interval 1 day then col1 end) as col1,
. . .
from table;
然后,您可以随意更新数据 - 如果您仍然觉得有必要的话。对数据的访问不依赖于作业和作业调度程序。如果所有对数据的访问都是通过视图进行的,那么在24小时后,数据将显示为NULL
。