2010-08-22 30 views
5

PostgreSQL 8.1.11 kullanıyorum.postgresql birden fazla satır ekle - başarısız

Ve aklımı kaybediyorum. Neden temel bir SQL deyimini INSERT olarak kullanamıyorum?

Ben sağlar: Ben

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 

ne eksik? Bu, birden çok satır eklemek için temel bir SQL INSERT ifadesi gibi görünüyor. Sorunum PostgreSQL sürümüyle ilgili mi?

Çok sayıda satır ekliyorum ve birkaç INSERT yerleştirmek yerine INSERT çoklu satırlarını optimize etmeye çalışıyorum.

+0

bir hata mesajı var mı? tam olarak ne diyor? – pleasedontbelong

+0

Bize hata mesajını göster ve size yardımcı olabiliriz. Virgül problem değil. Ps. 8.1.11 güncel değil, en son 8.1 sürümü 8.1.21 ve bu yıl da hizmet dışı kalacak. Daha yeni bir sürüme yükseltmeyi başlatın. –

+0

SQL hatası: HATA: sözdizimi hatası ya da yakınında "" karakteri 111 de açıklamada: the_leads_details (id, lead_id, question_id, i_value, c_value) INTO INSERT BOŞ (1, 1, 1, DEĞERLER , '4500'), (2, 1, 2, 1, NULL); – bensiu

cevap

14

Çok sıralı INSERT sözdizimi PostgreSQL 8.1 desteklenmez, sen 8.2 veya daha yeni yükseltmeniz gerekir (ve bugün yükseltmek eğer, gerçekten! 8.4 değil, 8.2 yükseltme olmalı)

diğer nedeni ise, Frank'in bir yorumda bahsettiği gibi, bu sürüm 8.1, Kasım ayında kullanım ömrünün sonuna kadar çıkacak. Bu nedenle, güncellemeyi incelemeye başlamak için gerçekten zamanı.

1

Sözdizimi doğru, sorunun virgül içinde olduğundan emin misiniz?

2

Ben eski bir iş parçacığı olduğunu biliyorum ama bu çalışacaktır:

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 
); 
İlgili konular