テーブルに20行あり、最後の4行が削除されたとします。次回は2行追加した後にプライマリ・キー・ナンバーを追加しました。プライマリキーをシリアルに作成する方法は?
1,2,3...16,21,22.
そのキーを復元する方法はありだろう、16の非常に次の行を格納するための任意の方法を意味し、その結果、あなたがこれを必要としません
1,2,3...16,17,18
テーブルに20行あり、最後の4行が削除されたとします。次回は2行追加した後にプライマリ・キー・ナンバーを追加しました。プライマリキーをシリアルに作成する方法は?
1,2,3...16,21,22.
そのキーを復元する方法はありだろう、16の非常に次の行を格納するための任意の方法を意味し、その結果、あなたがこれを必要としません
1,2,3...16,17,18
になります。 ちょうど私を信じて!
私はそこに何らかの方法があると思います。 – user729022
これは可能ですが、しかし、なぜ? – fingerman
+1私から。あなたは決してそのような行動を望むべきではありません。主キーに触れないでください、Vadim: –
Vadimが言うように、本当にやるのは面倒なことです。 関連するテーブルがある場合は、危険なゲームをすることもできます。この質問に似て
は、あなたが使っていますどのデータベースわかりませんが、これは役立つかもしれない: SQLite Reset Primary Key Field
なぜ1がこれを必要とするでしょうか?
どうしてですか?
あなたのテーブルはユーザーだと言うことができます。ここでキーを並べ替えると、投稿の「posted_by」領域に異なるユーザーが表示されるようになりました。これは悪い習慣です。
これは可能ですが、データベースを傷つけることになります。これを行うつもりならば、自分がやっていることと、それがデータベース内のすべてのもの(関連テーブル、レプリケーション、バックアップなど)にどのように影響するのかを正確に理解する必要があります。ここでは、その方法に関する情報とのリンクがありますが、再考することを強くお勧めします。
http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
あなたは限り、挿入/更新された値が一意に違反しないとしてAUTO_INCREMENTカラムに値を割り当てることができます。また、他の人があなたとの関係を乱さないように注意しなければならないとアドバイスしたように。 UIのどこかにPKを表示したいので、これを行っている場合は、DisplayIDフィールドを持つようにテーブルを変更するか、PKによって順序付けした後に連続するイテレーターを返すクエリを書き込む必要があります。
これは、データベースの整合性を破壊するのに最適な方法です。 –
これは役に立ちます http://stackoverflow.com/questions/740358/mysql-reorder-reset-auto-increment-primary-key/5437720#5437720 – Anshul