以下の関数を使用して、接頭辞の付いた一意のフィールドを作成しています。 これは、多くのユーザーとのトランザクションに使用されると問題を引き起こしますか? この関数はループ内で呼び出され、システムを同時に使用するユーザーが多い場合があります。私はGLAccountIDを他のテーブルの外部キーとして使用しています。mysqlフィールドの値プレフィックスの問題
function getID(){
global $db;
$max_gl = $db->get_var("SELECT MAX(GLAccountNumber) FROM sys_glaccount");
if($max_gl == null){
$max_gl = 1;
}else if($max_gl > 0){
$max_gl = $max_gl + 1;
}
return 'GLA'.$max_gl;
}
表はこのように見えますが、GLAccountNumberは主キーで、自動インクリメントに設定します。
これはどのように危険ですか? –
このようにして、別のユーザーが同じことを同時に実行すると、2つのaccountIDが同じですが、異なるaccountnumberを持つアカウントIDを取得します。テーブルをロックすると、処理が遅くなります。 – Nanne