-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 に答える