カテゴリ別にグループ化された SQL 自動インクリメント列
質問:
グローバル シーケンス識別子 ("id") と一意のカテゴリ制約を維持しながら、各カテゴリの列 ("category_id") を自動的にインクリメントする SQL ソリューションを作成するにはどうすればよいですか?
答え:
マルチユーザー環境では不一致が発生する可能性があるため、説明した内容を試すことは一般的にお勧めできません。理由は次のとおりです:
-
競合状態: 複数のユーザーがデータベースに同時にアクセスすると、category_id 値が重複またはスキップされる可能性があります。
-
トランザクションの問題: 挿入操作に複数のクエリが含まれる場合、エラーが発生した場合にデータの一貫性が保証されない可能性があります。
推奨方法:
-
category_id 列を削除します: ID とカテゴリ自体が提供しない情報は提供されません。
-
ID をグローバル識別子として使用します: それ自体がシリアル化され、自動でインクリメントされます。
-
row_number() を使用してその場で category_id を生成します。 この関数は、各カテゴリ内に連続した番号を割り当てることができ、別個の category_id 列の欠点を持たずに望ましい効果をもたらします。
以上がSQLでカテゴリグループごとに列を自動インクリメントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。