postgresql插入多行 - 失败

时间:2010-08-22 11:39:41

标签: postgresql

我正在使用PostgreSQL 8.1.11。

我正在失去理智。为什么我不能将基本的SQL语句用作INSERT?

我提供:

INSERT INTO the_leads_details ( id, lead_id, question_id, i_value, c_value ) VALUES
( 1, 1, 1, NULL, '4500' ), ( 2, 1, 2,    1, NULL );

                         ^ this comma is a problem

我缺少什么?这似乎是插入多行的基本SQL INSERT语句。我的问题与我的PostgreSQL版本有关吗?

我插入了很多行,我希望优化INSERT多行,而不是放置几个INSERT。

4 个答案:

答案 0 :(得分:14)

PostgreSQL 8.1不支持多行INSERT语法,你需要升级到8.2或更高版本(如果你今天升级,你真的应该升级到8.4,而不是8.2!)

另一个原因是,正如弗兰克在评论中提到的那样,版本8.1将在11月结束,所以真的时间开始调查升级。

答案 1 :(得分:4)

我不确定Postgresql 8.1是否支持VALUES中的多行。语法是:

INSERT INTO table [ ( column [, ...] ) ]
    { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) | query }

http://www.postgresql.org/docs/8.1/static/sql-insert.html

答案 2 :(得分:2)

我知道这是一个旧线程但是,这将有效:

INSERT INTO the_leads_details ( id, lead_id, question_id, i_value, c_value ) (
SELECT 1, 1, 1, NULL, '4500' 
UNION SELECT 2, 1, 2,    1, NULL 
);

答案 3 :(得分:1)

语法正确,你确定问题在逗号中吗?