Tom: Ein bisschen ENUM-Bastelei

Beitrag lesen

Hello,

1. wenn die Nachschlageliste mittels ALTER-Statement geändert wird,
   wird der Index neu vergeben und die gesamte Tabelle wird überarbeiet.

2. es ist möglich, gleiche Klartexte in die Liste einzutragen.
   Bei einem Insert in die Tabelle wird dann der erste dazu passende Index
   gewählt.

3. Der Fehler beim Insert ist immer noch vorhanden

mysql> insert into enumtest set val ='9';
   Query OK, 1 row affected (0.00 sec)

mysql> select * from enumtest;
   +----+----------------+
   | id | val            |
   +----+----------------+
   |  1 | zwanzig        |
   |  2 | dreißig        |
   |  3 | vierzig        |
   |  4 | dreiunddreißig |
   |  5 | vierzig        |
   +----+----------------+
   5 rows in set (0.00 sec)

'vierzig' hat den Index 9.

Eigentlich hätte der Eintrag abgelehnt werden müssen:

mysql> insert into enumtest set val ='dreizehn'; -- dreizehn ist nicht in der Liste
   Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> select * from enumtest;
   +----+----------------+
   | id | val            |
   +----+----------------+
   |  1 | zwanzig        |
   |  2 | dreiáig        |
   |  3 | vierzig        |
   |  4 | dreiunddreiáig |
   |  5 | vierzig        |
   |  6 |                |
   +----+----------------+
   6 rows in set (0.00 sec)

mysql> select id, val+0 from enumtest;
   +----+-------+
   | id | val+0 |
   +----+-------+
   |  1 |     4 |
   |  2 |     6 |
   |  3 |     9 |
   |  4 |     7 |
   |  5 |     9 |
   |  6 |     0 |
   +----+-------+
   6 rows in set (0.00 sec)

Das gibt zwar immer noch keine Auskunft über die innere Verwaltung der enumm-Klartexte, aber bei einem so dämlichen und fehleranfälligen Verhalten eines Datenbanksystems, das inzwischen Version 5.1 erreicht hat (und an 6.0 bastelt), mag ich nicht glauben, dass die hier eine intelligente Lösung drin haben.

Ergo: die enum-Verwaltung könnte für Version 6.0 wirklich überarbeiet werden!
      MMn sollte der Eintrag des Datensatzes bei einem verkehrten enum-Wert abgelehnt werden
      und eine entsprechende Fehlermeldung bereitgestellt werden.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de