每天午夜更新布尔postgresql?

时间:2013-12-15 22:14:14

标签: php database postgresql

我有一个名为“take”的布尔列,我将如何设置它,以便每个列的每个列在每天的午夜都设置为false?文件将如何运行?它只是一个独立的PHP文件,每晚都有效吗?

1 个答案:

答案 0 :(得分:0)

处理这种情况的典型方法是避免。不要运行每日批处理进行一般更新,这样做成本高昂,而且没有必要。

而是用日期替换布尔列。将其设置为当前日期,而不是将布尔值设置为true,并将其设置为null,而不是将布尔值设置为false。

然后读取这样的值,假设列为date_taken

SELECT coalesce((date_taken=current_date),false) AS taken, ... FROM tablename;
  • 如果date_taken=current_date,则表示它已于今天设置,因此产生真实。
  • 如果date_taken<>current_date,它已经设置但是更早,所以它会产生错误,就像午夜更新批次已经运行一样。
  • 如果date_taken为null,则从未设置或设置为null,coalesce()产生错误。