我正在使用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。
答案 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 }
答案 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)
语法正确,你确定问题在逗号中吗?