x
INSERT INTO table1
SELECT "hello" AS field1, 15 AS field2, 1262340000 AS timestamp
UNION
SELECT "byebye", 10, 1262340000
UNION
SELECT "hi", 20, 1262340000
UNION
SELECT "boo", 25, 1262340000
Table columns:
field1 field2 timestamp pk
pk
is the auto-incrementing primary key
An error occurs when I execute this SQL
DB Error: 1 “table table1 has 4 columns but 3 values were supplied”
Advertisement
Answer
You should explicitly specify which columns in table1
your insert is targeting:
INSERT INTO table1 (field1, field2, timestamp)
SELECT 'hello', 15, 1262340000
UNION ALL
SELECT 'byebye', 10, 1262340000
UNION ALL
SELECT 'hi', 20, 1262340000
UNION ALL
SELECT 'boo', 25, 1262340000;
When you omit the select list entirely, SQLite will fall back to expecting values for all columns in the table, in the exact order specified by the table definition. In your case, as you only provided values for 3 out of the 4 total columns, you get an error. Note that you could have also used VALUES
here:
INSERT INTO table1 (field1, field2, timestamp)
VALUES
('hello', 15, 1262340000),
('byebye', 10, 1262340000),
('hi', 20, 1262340000),
('boo', 25, 1262340000);