これは、最後に挿入された行 ID を 1 ずつ増やして使用し、次の人物 ID を生成します。データベースへの同時挿入を行うべきではないことに注意してください。last_insert_rowid()
INSERT INTO Person (name) SELECT 'Person #' || (last_insert_rowid()+1);
または、これは現在持っている最大の ID を読み取り、+1 をインクリメントしてから、テキストと連結します。null を返す場合は 1 を使用します。
INSERT INTO Person (name) SELECT 'Person #' || (IFNULL((MAX(id)+1),1)) FROM Person LIMIT 1;
これは自動インクリメントのインデックスを取得します:
INSERT INTO Person (name) SELECT 'Person #' || (seq+1) FROM sqlite_sequence WHERE name="person"
次のようなこともできます。
INSERT INTO Person (name) VALUES (NULL);
INSERT INTO Person (name) VALUES (NULL);
INSERT INTO Person (name) VALUES (NULL);
INSERT INTO Person (name) VALUES (NULL);
INSERT INTO Person (name) VALUES (NULL);
INSERT INTO Person (name) VALUES (NULL);
INSERT INTO Person (name) VALUES (NULL);
INSERT INTO Person (name) VALUES (NULL);
UPDATE Person SET name = 'Person #' || id WHERE name IS NULL;
または:
INSERT INTO Person (name) VALUES ('Person');
UPDATE Person SET name = name || ' #' || id WHERE id = last_insert_rowid();
#
これは、行 ID を持つ a を持たない名前を更新します。
INSERT INTO Person (name) VALUES ('Person');
INSERT INTO Person (name) VALUES ('Person');
INSERT INTO Person (name) VALUES ('Person');
INSERT INTO Person (name) VALUES ('Person');
UPDATE Person SET name = name || ' #' || id WHERE (LENGTH(name)-LENGTH(REPLACE(name, '#', ''))) = 0;
ライブデモ