458 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
In MySQL-Version 3.23 k¨onnen Sie das TEMPORARY-Schl¨usselwort benutzen, wenn Sie eine
Tabelle erzeugen. Eine tempor¨are Tab elle wird automatisch gel¨oscht, wenn eine Verbindung
stirbt und der Name sich auf die Verbindung bezieht. Das bedeutet, dass zwei verschiedene
Verbindungen beide denselben tempor¨aren Tabellenname b enutzen k¨onnen, oder miteinan-
der oder einer bestehenden Tabelle gleichen Namens in Konflikt zu geraten. (Die bestehende
Tabelle ist versteckt, bis die tempor¨are Tabelle gel¨oscht wird.)
Ab MySQL-Version 3.23 k¨onnen Sie die Schl¨usselw¨orter IF NOT EXISTS benutzen, so dass
kein Fehler auftritt, wenn die Tabelle b ereits besteht. Beachten Sie, dass keine
¨
Uberpr¨ufung
erfolgt, dass die Tabellenstrukturen identisch sind.
Jede Tabelle tabelle wird durch einige Dateien im Datenbank-Verzeichnis dargestellt. Im
Falle von MyISAM-Tabellen erhalten Sie:
Datei Zweck
tabelle.frm Tabellendefinitionsdatei (form)
tabelle.MYD Daten-Datei
tabelle.MYI Index-Datei
Weitere Information ¨uber die Eigenschaften der verschiedenen Spaltentypen finden Sie unter
Abschnitt 7.2 [Column types], Seite 376:
• Wenn weder NULL noch NOT NULL angegeben ist, wird die Spalte behandelt, als wenn
NULL angegeben worden w¨are.
• Eine Ganzzahl-Spalte kann das zus¨atzliche Attribut AUTO_INCREMENT haben. Wenn
Sie einen Wert von NULL (empfohlen) oder 0 in eine AUTO_INCREMENT-Spalte einf¨ugen,
wird die Spalte auf wert+1 gesetzt, wobei wert der gr¨oßte momentan in der Tabelle
vorhandene Spaltenwert ist. AUTO_INCREMENT-Folgen fangen mit 1 an. Siehe Ab-
schnitt 9.4.3.30 [mysql_insert_id()], Seite 572.
Wenn Sie eine Zeile l¨oschen, die den h¨ochsten Wert einer AUTO_INCREMENT-Spalte
enth¨alt, wird der Wert bei einer ISAM- oder BDB-Tabelle wieder verwendet, nicht aber
bei einer MyISAM- oder InnoDB-Tabelle. Wenn Sie alle Zeilen in der Tabelle mit DELETE
FROM tabelle (ohne ein WHERE) im AUTOCOMMIT-Modus l¨oschen, f¨angt die Folge bei
allen Tabellentypen von Neuem an.
HINWEIS: Es darf nur eine AUTO_INCREMENT-Spalte pro Tabelle geben und diese muss
indiziert sein. MySQL-Version 3.23 funktioniert dar¨uber hinaus nur korrekt, wenn
die AUTO_INCREMENT-Spalte nur positive Werte hat. Das Einf¨ugen einer negativen
Zahl wird als Einf¨ugen einer sehr großen positiven Zahl betrachtet. Damit werden
Genauigkeitsprobleme vermieden, wenn Zahlen vom positiven zum negativen Bereich
¨ubergehen. Ausserdem wird sichergestellt, dass man nicht versehentlich eine AUTO_
INCREMENT-Spalte erh¨alt, die 0 enth¨alt.
Um MySQL kompatibel mit einigen ODBC-Applikationen zu machen, k¨onnen Sie die
letzte eingef¨ugte Zeile mit folgender Anfrage finden:
SELECT * FROM tabelle WHERE auto_spalte IS NULL
• NULL-Werte werden bei TIMESTAMP-Spalten anders als bei anderen Spaltentypen
gehandhabt. Sie k¨onnen NULL nicht wortgetreu in einer TIMESTAMP-Spalte speichern:
Wenn Sie die Spalte auf NULL setzen, wird sie auf das aktuelle Datum und die aktuelle
Zeit gesetzt. Weil TIMESTAMP-Spalten sich auf diese Art verhalten, treffen die NULL-
und NOT NULL-Attribute nicht auf normale Art zu und werden ignoriert, wenn Sie sie
angeben.
Comentarios a estos manuales