Perl:1小时后自动更改表中的值

时间:2013-08-12 07:59:06

标签: perl

假设以下代码有效的系统:

my $class = DatabaseInterfaceModule->table1->new();
$class->insert( +{ping       => $ping_num,
                  created_at => time,
                  updated_at => time,
                  closed     => 0,} );
$class->commit;

它在被调用时在表1的新行中添加信息。 我想制作一个功能,1小时后,关闭值变为1。 任何模块或黑客?

最终“DatabaseInterfaceModule”无关紧要,DBI,Teng,......我对“在1小时后自动添加值或在表格中更改值”功能感兴趣。

1 个答案:

答案 0 :(得分:2)

我认为这是错误的问题。

如果实例在更新后1小时关闭,则closed字段的值直接从updated_at字段的值派生,因此它不应该是字段。它应该是一个从updated_at计算的方法:

sub closed { 
    my $self= shift;
    return $self->somehow_get_updated_at + 3600 < time();
}

我怀疑计算close的真正逻辑会比这更复杂,但无论如何,如果它是从表中的现有值派生的,它应该在Perl类中计算,或者作为视图中的字段计算的DB。否则,您在数据库中有重复的信息。