それは本当にあなたかどうかを検討する価値があるかもしれませんこれをやりたい主キーは、通常、行の寿命を通じて変化すべきではない、とあなたは常に実行して、行の合計数を見つけることができます。
SELECT COUNT(*) FROM table_name;
述べ、次のトリガーは、「ロールダウン」する必要があり、すべてのID番号をいつでも削除すると穴ができます:
CREATE TRIGGER sequentialize_ids AFTER DELETE ON table_name FOR EACH ROW
BEGIN
UPDATE table_name SET id=id-1 WHERE id > OLD.id;
END;
私はこれをサンプルデータベースでテストしたところ、広告として動作するようです。あなたは次のテーブルがある場合:
id name
1 First
2 Second
3 Third
4 Fourth
を、どこのid = 2削除し、その後テーブルは次のようになります。
id name
1 First
2 Third
3 Fourth
このトリガーは、それがかかる(時間がかかり、非常に貧弱なスケーリング特性を有することができます削除する行ごとに長く、表の残りの行はそれぞれ長くなります)。私のコンピュータでは、1000行のテーブルの最初に15行を削除するのに0.26秒かかりましたが、これは確かにiPhoneで長くなります。
なぜこれを行う必要がありますか?行IDが重要で必要なものが連続しているのはなぜですか? –