0

次のようなテーブルがあるとします。

ID|名前|
----------
1 |フレッド |
2 |ジム |
3 |トレーシー |
4 |ステイシー |

「id」は、自動インクリメントのプライマリ インデックスです。

「#2 - jim」の下に行を追加したいと思います。この新しい行を「ジョン」と呼びます。

「jim」の下に「john」を挿入して、john の「id」が 3 になり、「john」の下の名前のすべての id が 1 ずつ増えるようにするにはどうすればよいでしょうか?

例えば

ID|名前|
----------
1 |フレッド |
2 |ジム |
3 |ジョン |
4 |トレーシー |
5 |ステイシー |

どうもありがとう

4

2 に答える 2

2

このコマンドは、jim の後に全員の ID に +1 を追加します。

UPDATE your_table SET id=id+1 WHERE id>2;

このコマンドは、jim の直後に行を挿入します。

INSERT INTO your_table(id,name) VALUES(3,'john');

主キーの値を変更することは非常に悪い考えです。テーブルに他のテーブルとの関係がある場合、一貫性の問題が発生します。それが顧客テーブルで、注文テーブルがあるとしましょう。上記のアイデアにより、trstacy の注文は、tracy とtracy の john などに接続されます。

于 2013-02-22T04:50:34.930 に答える
0

これは、自動インクリメント ディレクティブが機能することを意図した方法ではありません。UPDATE を使用して行 3 を john に変更し、UPDATE を使用して行 4 を tracy に変更し、INSERT を使用して新しい行 5 を stacy として作成する必要があります。10,000 レコード テーブルの 5 行目の後に行を挿入する必要がある場合、これはひどいことです。

id 値を直接変更することもできますが、それは非常に悪い習慣です。

于 2013-02-22T04:50:58.377 に答える