492 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
• Sie k¨onnen kein DROP TABLE, ALTER TABLE oder DELETE FROM tabelle ohne eine WHERE-
Klausel auf jeder Tabelle, die von einer MERGE-Tabelle gemappt ist, ausf¨uhren, wenn
diese ’offen’ ist. Wenn Sie das tun, k¨onnte die MERGE-Tabelle immer noch auf die
Originaltabelle verweisen, und Sie w¨urden unerwartete Ergebnisse erhalten.
Wenn Sie eine MERGE-Tabelle erzeugen, m ¨ussen Sie mit UNION(liste-von-tabellen)
angeben, welche Tabellen Sie wie eine b enutzen wollen. Optional k¨onnen Sie mit
INSERT_METHOD angeben, ob Sie wollen, dass Einf¨ugungen in die MERGE-Tabelle in der
ersten oder der letzten Tabelle in der UNION-Liste geschehen sollen. Wenn Sie keine
INSERT_METHOD o der NO angeben, geben alle INSERT-Befehle auf die MERGE-Tabelle einen
Fehler zur¨uck.
Folgendes Beispiel zeigt, wie Sie MERGE-Tabellen benutzen:
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, nachricht CHAR(20));
CREATE TABLE t2 (a INT AUTO_INCREMENT PRIMARY KEY, nachricht CHAR(20));
INSERT INTO t1 (nachricht) VALUES ("test"),("tabelle"),("t1");
INSERT INTO t2 (nachricht) VALUES ("test"),("tabelle"),("t2");
CREATE TABLE gesamt (a INT NOT NULL, nachricht CHAR(20), KEY(a)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;
Beachten Sie, dass wir keinen UNIQUE- oder PRIMARY KEY-Schl¨ussel in der gesamt-Tabelle
angegeben haben, weil der Schl¨ussel in der gesamt-Tabelle nicht eindeutig sein wird.
Beachten Sie auch, dass Sie die .MRG-Datei direkt von ausserhalb des MySQL-Servers ma-
nipulieren k¨onnen:
shell> cd /mysql-data-verzeichnis/aktuelle-datenbank
shell> ls -1 t1.MYI t2.MYI > gesamt.MRG
shell> mysqladmin flush-tables
Jetzt k¨onnen Sie Dinge wie folgendes tun:
mysql> select * from gesamt;
+---+-----------+
| a | nachricht |
+---+-----------+
| 1 | test |
| 2 | table |
| 3 | t1 |
| 1 | test |
| 2 | table |
| 3 | t2 |
+---+-----------+
Um eine MERGE-Tabelle neu zu mappen, k¨onnen Sie folgendes tun:
• Die Tabelle l¨oschen (DROP) und neu erzeugen.
• ALTER TABLE tabelle UNION(...) benutzen.
• Die .MRG-Datei ¨andern und ein FLUSH TABLE auf die MERGE-Tabelle und alle zugrunde
liegenden Tabellen ausf¨uhren, um den Handler zu zwingen, die neue Definitionsdatei
einzulesen.
Kommentare zu diesen Handbüchern