在SQLite中使用批量插入自动生成的id

时间:2012-10-11 14:12:51

标签: sqlite

我有一个SQLite表,它使用自动生成的id作为主键。我想使用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?

1 个答案:

答案 0 :(得分: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),
       ... ;