在特定条件下归档数据

时间:2012-05-15 10:30:43

标签: php mysql archive

我有两个表,projectsarchive具有相同的列。如您所知,我需要在某些条件下将项目归档到archive表中。

我写了两个请求,如果单独执行它们会正常工作,但我想组装它们。

$sql = "INSERT INTO archive (idDocument,documentNumber,submissionDate,projectName)
        SELECT idDocument,documentNumber,submissionDate,projectName
        FROM projects
        WHERE id='".$id."'";

$sql = "DELETE FROM projects
        WHERE id='".$id."'";

1 /首先,我如何组合这两个请求?我不断收到语法错误。

2 /现在,我在PHP中将项目状态(在名为status的列中)从“1”分配给“3”,我想在这些项目达到状态两个月后归档这些项目“ 3" 。我怎么能这样做?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

通过汇编不知道你的意思,也许你想在一个简单的调用中查询这两个查询,然后每个查询应该通过查询分隔符结束 - 分号;,如下所示:

$sql = "INSERT INTO archive (idDocument,documentNumber,submissionDate,projectName)
    SELECT idDocument,documentNumber,submissionDate,projectName
    FROM projects
    WHERE id='".$id."';

    DELETE FROM projects
    WHERE id='".$id."';";

如果您希望归档+删除状态为3的项目,两个月后它们已被3统计,您必须执行以下操作:

  1. 将项目更新为状态3时,还设置date_changed = NOW()(或类似表达式)
  2. 写下将要执行的CRON作业,让我们说每天凌晨3:00。
  3. CRON作业将调用PHP脚本,该脚本将向下走projects表并存档+删除状态为3 date_changed小于或等于NOW() - INTERVAL '2' MONTHS的所有项目。 ..
  4. 应该这样做......

相关问题