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

每行提供三个值:

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 回答