2016-04-02 27 views
2

Bir tablodan diğerine, all_address öğesinden müşteriye veri yüklemeye çalışıyorum.Psql null hatası değil, değer boş değil

başarıyla bir hata alıyorum ben sokak adresi, şehir elde etmeye çalışmak Ancak her ne zaman bu kadar

INSERT INTO Customer(username, password, customer_email, first_name, 
    last_name, middle_initial) 
SELECT username, password, customer_email, first_name, 
    last_name, middle_initial 
FROM all_user; 

gibi müşteri tabloya eklemek ve posta

INSERT INTO Customer(street_address, city, zip_code) 
SELECT temp.street_address, temp.city, 
     temp.zip_code 
FROM all_address as temp, Customer as final 
WHERE temp.customer_email = final.customer_email; 

yaparak:

psql: manip.sql: 82: HATA: "kullanıcı adı" sütunundaki boş değer, boş olmayan sınırlamayı ihlal ediyor

Kullanıcı adı birincil anahtar olduğundan, hatanın neden olduğu gibi kullanıcı adında boş bir değer olmaması için kullanıcı adları ile müşteriler oluşturduğundan emin olduğum için hatayı alıyorum neden anlamıyorum.

Her türlü yardım takdir!

cevap

0

İkinci sorguda bir username değeri sağlamadığınız için hatayı alıyorsunuz. Muhtemelen varsayılan değeri yoktur ve değeri ayarlamak için hiçbir mekanizma yoktur, bu nedenle NULL için varsayılan değerdir.

Bir değer sağlamanız gerekiyor. ,

update Customer c 
    set street_address = aa.street_address, 
     city = aa.city, 
     zip_code = aa.zip_code 
from all_address aa 
where aa.customer_email = c.customer_email; 
+0

sözdizimi 'güncelleştirme Müşteri c seti STREET_ADDRESS = aa.street_address, şehir = aa.city yapmak için gerekli, biraz psql'in için kapalı: İster bir update yerine insert bir daha niyetinde olması mümkündür zip_code = aa.zip_code all_address adresinden aa.customer_email = c.customer_email; Ama bu işe yaradı! –

+0

@AnnaGoldberg. . . İlk satırdaki sütun isimlerini bırakmak benim üzerimde bir düzenleme hatasıydı. Kolayca yakaladığına sevindim. –

İlgili konular