1

假设以下代码工作的系统:

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小时后自动添加值或更改表中的值”功能感兴趣。

4

1 回答 1

2

我认为这是一个错误的问题。

如果实例在更新1小时后关闭,那么该closed字段的值是直接从该updated_at字段的值推导出来的,所以它不应该是一个字段。它应该是一种计算方法updated_at

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

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

于 2013-08-12T09:11:38.840 回答