ホームページ >データベース >mysql チュートリアル >PostgreSQL の主キーシーケンスの不一致を修正するにはどうすればよいですか?
PostgreSQL の主キー シーケンスの不一致のトラブルシューティング
PostgreSQL ユーザーは、主キーのシーケンスと実際のテーブル データの間で不一致が発生することがあります。この非同期は、データのインポートまたはデータベースの復元エラーによって発生することが多く、新しい行を挿入するときに重複キー違反が発生してイライラする可能性があります。 このガイドでは、シーケンスを再調整するための簡単なソリューションを提供します。
主キーシーケンスの再調整
シーケンスとテーブルの行の間の調和を復元するには、次の手順に従います:
最高 ID を特定する: まず、テーブルにクエリを実行して、既存の主キーの最高値を見つけます。次の SQL コマンドを使用します:
<code class="language-sql"> SELECT MAX(id) FROM your_table;</code>
シーケンスを調べる: 次に、主キーに関連付けられたシーケンスの現在の値を調べます。 次の SQL ステートメントを使用します:
<code class="language-sql"> SELECT nextval('your_table_id_seq');</code>
結果の比較: ステップ 1 の最大 ID とステップ 2 のシーケンス値を比較します。シーケンス値が最大 ID を超えない場合は、次のステップに進みます。
シーケンスをリセットします: 次の SQL ステートメントを実行してシーケンスをリセットし、テーブル データの現在の状態が正確に反映されていることを確認します:
<code class="language-sql"> SELECT setval('your_table_id_seq', (SELECT GREATEST(MAX(your_id), nextval('your_table_id_seq') - 1) FROM your_table));</code>
これらの手順を完了すると、主キーのシーケンスが効果的にリセットされ、不一致が解決され、PostgreSQL データベース内での今後のキーの競合が防止されます。
以上がPostgreSQL の主キーシーケンスの不一致を修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。