DEFAULT '' NOT NULL [Oracle]

Arndtinho

Erfahrenes Mitglied
Hallo,

ich habe folgendes Script ausgeführt:
Code:
CREATE TABLE modell
(
	gog_id VARCHAR(25) DEFAULT '' NOT NULL,
	mod_id VARCHAR(25) DEFAULT '' NOT NULL,
	mod_text	VARCHAR(40) DEFAULT '' NOT NULL
);
Die Tabelle wurde auch erstellt. Nun möchte ich diese befüllen.
Code:
INSERT INTO modell (gog_id, mod_id, mod_text) 
	VALUES ('1', '123456', 'super modell');
INSERT INTO modell (gog_id, mod_id, mod_text) 
	VALUES ('2', '456789', '');
Da bekomme ich aber den Fehler
Code:
 cannot insert NULL into ("MyDB"."MODELL"."MOD_TEXT")
Wieso hat damit Oracle ein Problem? Der Default-Wert ist doch bestimmt. Wie kann ich denn in Oracle Leerstrings behandeln, so dass das INSERT klappt, aber die Tabelle nicht erst umgeschrieben werden muss?

Oracle-Version: 9.2.0.1.0

Viele Grüße
Arndtinho
 
Moin Arndtinho,

die optimale Lösung habe ich vielleicht nicht, aber das ziel wäre erreicht, wenn Du die Logik auf die Befüllungsseite verlagerst.
Wenn kein Wert in dem "mod_text" steht, dann lass dieses Feld in der INSERT-Anweisung weg.
Code:
INSERT INTO modell (gog_id, mod_id) 
	VALUES ('2', '456789');

Andererseits... wenn Deine mod_id gar keine Attribute hat, was sagt sie dann aus?
Oder ist "mod_text" nur ein Bemerkungstext zur Kombination gog_id/mod_id?
Dann müssten allerdings irgenwo FKs zu lesen sein...

Grüße
Biber
 
Wenn du den Default-Wert ausnutzen möchtest, ist tatsächlich der normale Ansatz, dass du das aus dem Insert rausnimmst und komplett weglässt. Dann sollte Oracle eigentlich erst den Default-Wert nehmen.
 
Zurück