ORA-01400: cannot insert NULL into ("SCHEMA"."TABLE"."COLUMN")
Bir INSERT, NOT NULL bir kolonu boş bıraktı. Mesaj kolonun adını verir. Bir değer gönderin, kolona varsayılan değer tanımlayın ya da bir trigger’ın veya identity kolonun doldurmasını sağlayın.
Ne anlama gelir?
NOT NULL kısıtı, her satırın o kolonda bir değeri olması gerektiği anlamına gelir. INSERT kolondan hiç bahsetmiyorsa ve kolonun varsayılan değeri yoksa — ya da açıkça NULL ekleniyorsa — Oracle satırı reddeder ve kolonu adıyla bildirir; örneğin ("HR"."EMPLOYEES"."HIRE_DATE").
Yaygın nedenler
- Kolon INSERT’in kolon listesinde yok ve varsayılan değeri tanımlı değil.
- Uygulama NULL ya da boş metin gönderiyor (Oracle
''’yi NULL kabul eder). - Kaynak kolonunda NULL’lar bulunan bir
INSERT … SELECT. - Sequence, trigger ya da identity kolonla doldurulması beklenen ama eksik kalan birincil anahtar.
Nasıl çözülür?
- Mesajdaki kolon adını okuyun ve INSERT’e bir değerle ekleyin.
- Kolona varsayılan değer verin:
ALTER TABLE t MODIFY (kolon DEFAULT …); açıkça gönderilen NULL’ları da değiştirmek için Oracle 12c ve sonrasındaDEFAULT ON NULL. - Anahtarlar için identity kolon (12c ve sonrası) ya da
sequence.NEXTVALkullanın. - Oracle’da boş metnin NULL olduğunu unutmayın.
Örnek
NULL gönderilse bile kolonu doldurun (12c ve sonrası):
ALTER TABLE orders MODIFY (status DEFAULT ON NULL 'NEW');
SQLlightspeed’de
Bir ifade hata verdiğinde SQLlightspeed’in hata paneli, hata kodunu sade bir Türkçe açıklama ve ne yapmanız gerektiğine dair bir öneriyle; Oracle’ın kendi mesajı ve Oracle dokümantasyonuna bağlantıyla birlikte gösterir — bu hata ve sık görülen onlarca başka hata için.
İlgili hatalar
ORA-00001ORA-12899ORA-01722 Tüm Oracle hataları →
Oracle dokümantasyonu: ORA-01400. Oracle, Oracle Corporation’ın tescilli ticari markasıdır. SQLlightspeed’in Oracle ile bir bağlantısı yoktur.