例を見てみましょう:
id (auto_increment) user
1 John
2 Mary
10 Christopher
users
クエリに newを not used で強制的に追加するにはどうすればよいids
ですか? :私たちの場合、3 から 9 まで:
挿入したいレコードの ID をテーブルの最初の「欠落している」ID 値に設定することで、少し巧妙な SQL でこれを行うことができます。
INSERT INTO myTable (id, user)
VALUES
(
(SELECT MIN(mt2.id)+1 from myTable mt2 WHERE NOT EXISTS
(SELECT 'Y' from myTable mt3 where mt3.Id = mt2.id + 1)),
'New User Name'
)
DBMS によっては、1 つのクエリでこれを実行できない場合があります。このアプローチでは、Id 列を「自動生成」列にすることもほとんど役に立たなくなります。この挿入は、ID ジェネレーターが使用しようとするかどうかに関係なく、ID を持たない最小値を常に見つけます。テーブルに挿入する前に、ほとんど常に「ID 挿入」を有効にする必要があります。このテーブルの auto-gen 機能は使用されません。
これはどうですか:
/*!40000 ALTER TABLE `mytable` DISABLE KEYS */;
INSERT INTO `mytable` (`id`,`col1`) VALUES (1,'mydata');
/*!40000 ALTER TABLE `mytable` ENABLE KEYS */;
もっと単純な IMO です。MySQL 管理 GUI ツールによって生成されます。