Schrift
[thread]3804[/thread]

mysql: ENUM und default (Seite 2)



<< |< 1 2 >| >> 12 Einträge, 2 Seiten
Froschpopo
 2007-04-25 17:51
#35423 #35423
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Also ich hab das so verstanden: Wenn mySQL für "status" einen invaliden Wert bekommt, dann setzt er immer default oder den ersten Wert aus ENUM().
Mit status = '' erzeuge ich einen invaliden Wert der aber zu keiner korrekten Reaktion führt und das ärgert mich. Da muss eine '1' sein!
Mein Wert "" ist in ENUM nicht drin, also soll da eine 1 hin.
Und wenn ich NOT NULL will, dann will ich da auch keine NULL sondern die 1!

Das hat folgenden Grund:
Ich hab ne Tabelle mit ca 200 Charaktereigenschaften von der Person, der dieser datensatz gehört.
Wenn sich die Person jedoch frisch registriert hat, sind diese Charaktereigenschaften noch nicht bekannt. Deshalb will ich beliebte Charaktereigenschaften aber trotzdem schonmal vorbelegen.
Die Registrierung besteht lediglich aus der Angabe einer E-Mail Adresse. Es wäre doch echt mehr als beknackt, wenn ich in dem INSERT der E-Mail Adresse auch gleich alle 200 Charaktereigenschaften angeben müsste. Das würde den Code enorm aufblähen.\n\n

<!--EDIT|Froschpopo|1177509303-->
nepos
 2007-04-25 19:43
#35424 #35424
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Lies nochmal mein zweites Zitat aus der MySQL-Doku. MySQL verhält sich in dem Fall eigentlich richtig.
Wenn du die Werte einfach vorbelegen willst, dann gibst du sie beim INSERT doch einfach mit und kriegst automatisch einen Default-Wert eingetragen. Oder aber, du lässt das NOT NULL weg und schreibst NULL rein, dann is klar, dass das Feld noch nicht korrekt belegt worden ist.

Btw, der Sinn eines Defaults ist doch, dass du ihn nicht zwingend mit übergeben musst. Du gibst die nötigen Felder wie die Email-Adresse und sowas mit, den Rest lässt du einfach weg und die DB setzt dann die Defaults ein...

Durch deine Benutzung von leeren Strings beim initialen Anlegen der Datensätze umgehst du genau diesen Mechanismus und musst trotzdem für jedes Feld einen Wert übergeben...
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2007-04-25 13:48.