Perl DBI:返回唯一的时间戳

时间:2012-10-17 17:42:30

标签: sql perl dbi

我需要一种方法让数据库返回一个唯一的时间戳(格式为YYYYMMDD.HH:MM:SS)或我可以解析的东西。我的程序有文件名进来并重命名,我试图找到一种方法来确保我没有在文件上重复的时间戳和风险覆盖文件。数据库将仅以YYYYMMDD.HH:MM:SS格式跟踪时间记录。如果文件进来并且时间与数据库匹配,我需要数据库返回新的时间戳并更新数据库。

if( $fileName =~ m/^[a-z0-9]{3}[0-9]{5}\.[0-9]{5}\.([0-9]{8}\.[0-9]{2}:[0-9]{2}:[0-9]{2})\.(.)*/ )
{
    $dttmstmp = $1;
}
else
{
    $current_time = Date->getDateTime();
    $dttmstmp = $current_time;
}

    my $databaseHandle = getDbConnection();
    my $tstamp_present = getDbTime ( $databaseHandle , $dttmstmp );

    if ($tstamp_present == 1)
    {
            sleep(1);   # sleep to change timestamp
            $dttmstmp = Date->getDateTime(); # Get new timestamp
            updateTimestamp ( $databaseHandle , $dttmstmp ); # Update database with new timestamp
    }
    else
    {
            updateTimestamp ( $databaseHandle , $dttmstmp ); # Update database with new timestamp
    }

1 个答案:

答案 0 :(得分:4)

使用数据库生成唯一值听起来不是一件好事。更好的方法是使用UUID。 CPAN上有几个模块可用于此,例如Data::UUID