每天午夜更新boolean postgresql


update boolean postgresql at midnight everyday?

我有一个名为"take"的布尔列,我该如何设置它,以便在每天午夜将每个列的条目设置为false?文件将如何运行?它只是一个独立的php文件,每天晚上都能工作吗?

处理这种情况的典型方法是避免它。不要每天运行一批进行一般更新,这很昂贵,而且没有必要。

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

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

SELECT coalesce((date_taken=current_date),false) AS taken, ... FROM tablename;
  • 如果是date_taken=current_date,则表示它已在今天设置,因此它产生true
  • 如果是date_taken<>current_date,则它已被设置但更早,因此它产生false,就好像午夜更新批处理已经运行一样
  • 如果date_taken为null,则它从未被设置或设置为null,并且coalesce()产生false