0

私は、mysql データベース内の主キー フィールドにクライアント側で生成された乱数を使用するプロジェクトに参加しました。これらの主キー フィールドは自動インクリメントですが、そのようには使用されていません。

これは、開発者が挿入後にデータベースで生成された ID を取得する方法を知らなかったために行われたと思います。

現在、多くのテーブルに id 値のまばらな配列があり、挿入時にかなりの数のキーの衝突があります。

データベースが ID を生成できるようにする (つまり、最後に割り当てられた ID から開始し、次に使用可能な ID を見つける) ため、および次の JDBC 呼び出しが機能するようにするために、私ができる修正作業はありますか?

numero = stmt.executeUpdate(query, Statement.RETURN_GENERATED_KEYS);
4

1 に答える 1

0

Google で「シーケンス MySQL からデータベースの主キーを生成」と検索すると役立つと思います。

シーケンスの使用: 特定のテーブルで最大の主キーを見つけ、その最大の主キー値から開始して 1 ずつ増加するシーケンスを作成します。テーブルごとに個別のシーケンスを作成します。データベースにキーを生成させているため、プログラムまたはクライアントがキーを生成できないようにする必要があることに注意してください。

または、主キー生成を正しく実装する新しいデータベース スキーマを作成することもできます。次に、古いデータベースから新しいデータベースにデータを移行し、子テーブルの前に親テーブルにデータを入力します。次に、古いプライマリ キーに基づいて親レコードと子レコードをプログラムで照合します。ただし、これはデータベースのサイズに対して非常に時間がかかると思います。

于 2013-09-25T19:37:57.447 に答える