1

自動生成されたIDを主キーとして使用するSQLiteテーブルがあります。UNION SELECTを使用して一括挿入を実行したいのですが、各行にIDを指定しないと満足できないようです。

sqlite> create table CelestialObject (id INTEGER PRIMARY KEY, name VARCHAR(25), distance REAL);
sqlite> insert into CelestialObject select 'Betelguese' as name, 200 as distance UNION SELECT 'Procyon', 500;
Error: table CelestialObject has 3 columns but 2 values were supplied

テーブルを作成するときにidにAUTOINCREMENT(つまり、「id INTEGER PRIMARY KEY AUTOINCREMENT」)を指定した場合、エラーは同じです。

各行のIDを指定せずに一括挿入を使用する方法があるかどうか誰かに教えてもらえますか?

4

1 に答える 1

0

行ごとに3つの値を指定します。

INSERT INTO CelestialObject SELECT NULL, 'x', 42 ...

または、入力する列を明示的に指定します。

INSERT INTO CelestialObject(name, distance) SELECT 'x', 42 ...

SQLite 3.7.11以降を使用している場合は、一括挿入を簡単に行うことができます。

INSERT INTO CelestialObject(name, distance)
VALUES ('Betelgeose', 200),
       ('Procyon', 500),
       ... ;
于 2012-10-11T16:43:12.693 に答える