Hallo AhANiBoy
user
varchar(20) NOT NULL, sagt doch aus,
daß "user" NICHT leer sein darf, oder?
dass in der Spalte user stets etwas stehen muss.
insert into foo (
id
,user
) values ('', ''); geht jedoch!
Warum auch nicht, das ist der Leerstring, das ist was ganz anderes als NULL.
Die Ziffer 0 ist übrigens auch was anderes als NULL.
Siehe <http://dev.mysql.com/doc/mysql/de/null-values.html@MySQL-Handbuch, NULL-Werte>.
select * from foo; zeigt mir,
dass das Feld "user" in der entsprechenden Zeile leer ist.
Es ist nicht "leer", es steht der Leerstring drin. Das ist ein subtiler Unterschied.
Teste bitte
SELECT * from foo WHERE user IS NULL
Was ist dann ein NULL Feld?
s.o.
Also was ist der Unterschied zwischen NULL und NOT NULL und '' ?
NULL: keine Daten vorhanden
NOT NULL: Daten vorhanden
'': Leerstring vorhanden, somit Daten vorhanden :-)
Alle scheinen leere Felder zu erlauben!
Nö.
Freundliche Grüße
Vinzenz