-1

プレフィックス + 自動インクリメント ID を持つフィールドを使用しています。インスタンスごとに、ID の max+1 を取得し、それをプレフィックスに追加しています。これをユニークなものにする方法を教えてください。

4

2 に答える 2

0

max(id)+1 を使用する際の問題は、複数のスレッドが同じ呼び出しを行う可能性があるため、結果が一意にならないことです。この問題を解決するにはいくつかの方法があります。1 つ目は、新しい ID が要求されるたびにデータベース サーバーが番号をインクリメントするシーケンスを使用することです。数値を含むテーブルを使用できますが、数値を更新するときはテーブルをロックする必要があります。または、テーブルが挿入されたときにデータベースがキーを作成し、挿入後にキーを取得できるようにすることもできます。すべて有効です。

私は Hibernate を使用して、現在使用しているデータベースの ID を実装する方法を決定することを好みます。

于 2012-12-15T06:20:52.973 に答える
0

これを試すことができます:

Insert into table1 (id, user_id)
SELECT MAX(id)+1, CONCAT('a',CAST(MAX(id)+1 AS char))
FROM table1;

このSQLFiddleを参照してください

于 2012-12-15T06:16:48.873 に答える