-2

我需要一种方法让数据库返回一个唯一的时间戳(格式 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
    }
4

1 回答 1

4

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

于 2012-10-17T19:09:54.797 回答