Mailinglisten-Archive |
Hallo, habe gestern Stunden versucht, etwas brauchbares ueber den key UNIQUE in MySQL zu finden und komme da leider nicht weiter. Ziel ist eine Spalte zu definieren, deren Werte nur einmal vorkommen duerfen, sie sollten aber nicht per auto_increment vergeben werden sondern manuell eingetragen werden. Genau das scheine ich laut Infos mit dem key UNIQUE erreichen zu koennen. In der Praxis entstand aber nur ein Wust von Fragen. Angelegt habe ich die Spalte nachtraeglich. So ist fuer jeden Datensatz also erstmal der Wert NULL in dieser Spalte eingetragen worden. Das ist so erstmal in Ordnung - widerspricht nur voellig der Annahme, dass diese Spalte keine identischen Werte haben soll??! Wenn ich die Tabelle mit DESCRIBE im Terminal betrachte, erhalte ich fuer meine neue Spalte folgenden Eintrag: mysql> DESCRIBE xyz; +---------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+--------------+------+-----+---------+----------------+ snip ... | Nr | tinyint(4) | YES | MUL | NULL | | +---------------+--------------+------+-----+---------+----------------+ 4 rows in set (0.00 sec) Unter Key erscheint der Eintrag MUL. Den habe ich wohl mit UNIQUE ausgeloest, aber was bedeutet er? Bisher fand ich alles in der mysql shell ziemlich selbsterklaerend, aber gibt es Infos, was welche Eintraege dort genau bedeuten? Aber nochmal zur Praxis: Ich moechte beim Anlegen neuer Datensaetze in dieser Tabelle in die Spalte Nr Werte eintragen, die eigentlich automatisch generiert werden bzw die ich nicht extra vergebe. Die NULL ist mir da im Prinzip recht. Optional moechte ich aber diese Werte nachtraeglich aendern in sinnvolle numerische Werte, und dann sollten nie zwei identisch sein duerfen. Wenn ich Nr als NOT NULL definiere, wie kann ich ohne auto_increment automatisch Werte eintragen, die Sinn machen? Kann ich z.B. einen INSERT fuer dieses Feld definieren, der mir die Menge der vorhandenen Datensaetze ausliest und so lange 1 addiert, bis der enstandene Wert noch nicht vorkommt (in der Tabelle kann ich jederzeit Eintraege loeschen, wodurch die Zaehlung natuerlich verloren geht). Bei auto_increment kann ich ja nachtraeglich die Werte nicht mehr aendern, daher kommt das nicht in Frage ... Und arbeitet UNIQUE tatsaechlich so, dass es NULL zulaesst aber alle anderen Werte nicht identisch sein duerfen? Das wuerde mir im Prinzip sogar am meisten entgegen kommen. Sorry, der Text ist arg lang. Habe aber trotz sehr langem Suchen weder im Manual noch in meinem MySQL Buch dazu Infos gefunden. Bin fuer jeden Hinweis dankbar, Gruesse und einen schoenen Tag Friederun Goellner
php::bar PHP Wiki - Listenarchive