Hello,
Normalerweise sowas:
ENUM('y', 'n')
und als Wert überträgst du 'y' oder 'n' ansonsten wirft die DB einen Fehler.
Nein, die DB verursacht keinen Fehler, zumindest nicht bei Version 3.23.55-max. Es wird bei fehlerhafter Eingabe einfach 0 eingetragen. Ob das bei Version 4 anders ist, weiß ich nicht.
Man kann auch "Not Null" setzen. Es lässt sich trotzdem der Wert "" eintragen. Eine Prüfung muss also unbedingt durch die API stattfinden.
Ich habe die Korrektur- und Ergänzugsmöglichkeit nochmals ausprobiert, und mir die Änderungen im HEX-Editor angeschaut. Man kann nachträglich Auswahlwerte hinzufügen oder entfernen. Die Daten bleiben erhalten. MySQL passt automatisch den Index in der Datendatei (*.MYD) an, zumindest, wenn man nicht mehr als eine Änderung gleichzeitig an der ENUM-Wertedefinition vornimmt. Die schweren Fehler bei den ENUM-Feldern (in einer älteren MySQL-Version) scheinen also behoben.
ENUM ist eine Tabelle in der Tabelle. das heißt, dass in der Definition der Tabelle (*.frm) die Werteliste nebst Indexen angelegt wird. Im der Datentabelle steht dann nur der Index. Bei der Anzeige ersetzt MySQL diesen Index durch den Klartext aus der internen Nachschlagetabelle.
Liebe Grüße aus http://www.braunschweig.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen