Seite 1 von 1

phpMy Admin Frage zu "null" und "not null&quo

Verfasst: 02.10.2003 00:03
von Tarndt
Ich habe eigentlich nur eine kleine Frage:

Wenn ich einen MOD habe, in dem ich die Datenbak erweitern muss, steht da, was ich einrichten muss. Wenn da nun nicht explizit "not null" steht, muss dann das feld NULL auf "null" oder "not null" gestellt werden? meine standardeinstellung wäre dort "not null" und bisher hatte ich das immer so gelassen. Oder ist das bei verschiedenen variablen (z.B. VARCHAR(255) ) egal?

Verfasst: 02.10.2003 00:20
von PhilippK
Im Zweifel ist bei MySQL "NULL" Standard (siehe http://www.mysql.com/doc/en/CREATE_TABLE.html). Wenn der Mod sauber programmiert ist, sollte diese Einstellung auch immer funktionieren. Bei NOT NULL hingegen kann es zu Problemen kommen, sobald der Mod explizit mit dem NULL-Wert arbeitet.

Gruß, Philipp

Verfasst: 02.10.2003 01:49
von Tarndt
Ahja, und wieder schlauer.
Mit dem Link wolltest Du mich wohl auf diesen Satz bringen
"If neither NULL nor NOT NULL is specified, the column is treated as though NULL had been specified."?

Verfasst: 02.10.2003 09:44
von oxpus
Ich weis nicht, ob ich jetzt völlig daneben liege, aber bedeutet "not null" nicht, das das betreffende Feld nicht leer sein darf?
Korrigiert mich, aber ich denke, das ist doch der eigentliche Unterschied zwischen "null" und "not null" :-?
Und somit ist eben "null" Standard, damit ein Datensatz auf jeden Fall angelegt werden kann, es sei, der Admin legt bestimmte Felder explizit mit "not null" an...

Verfasst: 02.10.2003 09:49
von PhilippK
oxpus,

du liegst etwas falsch. Die genaue Beschreibung liegt hinter dem Link, den ich oben gepostet habe.
Ein Feld, dass das Attribut 'NOT NULL' hat, darf durchaus den Wert 0 oder den leeren String ("") annehmen - nur eben nicht den Wert NULL.

Gruß, Philipp

Verfasst: 02.10.2003 16:22
von oxpus
@PhilippK
Ach so! Wieder was gelernt. Danke für die Erklärung.
Mit Datenbanken kenne ich mich ja eigentlich aus, aber so im Detail kann man halt immer noch was Neues lernen :wink:

EDIT / Nachtrag:
In der Beschreibung zu CREATE TABLE wird NULL und NOT NULL folgendermassen erklärt (grob beschrieben):
Ein Feld mit Default NULL ist per Standard eben leer.
Ein NOT NULL-Feld beinhaltet als Standardwert eine 0 (numerisch), einen Autowert, einen Zeitstempel (Datum-Zeit) oder einen Leerstring (String-Feld), halt je na Feld-Typ. Korrekt: NULL darf ein solches Feld nicht sein!
Somit ist ein Feld mit Default NOT NULL eben doch nicht leer (Auch ein Leerstring ist ein Inhalt, so habe ich das vor Urzeiten mal gelernt!) :wink: Wird bei einem Dateisatz für ein NOT NULL-Feld nichts angegeben, so setzt die Datenbank halt nur automatisch o.g. Standardwerte ein...