MySQL INFORMATION_SCHEMA
Datenbank zur Rettung:
-- First check if the table exists
IF EXISTS(SELECT table_name
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = 'db_name'
AND table_name LIKE 'wild')
-- If exists, retreive columns information from that table
THEN
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'tbl_name'
AND table_schema = 'db_name';
-- do some action, i.e. ALTER TABLE if some columns are missing
ALTER TABLE ...
-- Table does not exist, create a new table
ELSE
CREATE TABLE ....
END IF;
Weitere Informationen:
- MySQL-Referenzhandbuch:Kapitel 19. INFORMATION_SCHEMA-Tabellen
- MySQL-Referenzhandbuch:Die Tabelle INFORMATION_SCHEMA TABLES
- MySQL-Referenzhandbuch:Die INFORMATION_SCHEMA COLUMNS-Tabelle
AKTUALISIERUNG:
Eine andere, möglicherweise einfachere Option besteht darin, die vorhandene Tabelle zu löschen und mit dem neuen Schema erneut zu erstellen. Dazu benötigen Sie:
- Temporäre Tabelle erstellen, eine exakte Kopie der bestehenden Tabelle
- Füllen Sie die temporäre Tabelle mit den Daten aus der alten Tabelle
- Lösche die alte Tabelle
- Erstellen Sie die neue Tabelle mit neuem Schema
- Füllen Sie die neue Tabelle mit den Informationen aus der temporären Tabelle
- Temporäre Tabelle löschen.
Also im SQL-Code:
CREATE TABLE old_table_copy LIKE old_table;
INSERT INTO old_table_copy
SELECT * FROM old_table;
DROP TABLE old_table;
CREATE TABLE new_table (...new values...);
INSERT INTO new_table ([... column names from old table ...])
SELECT [...column names from old table ...]
FROM old_table_copy;
DROP TABLE old_table_copy;
Eigentlich könnte man den letzten Schritt, „Temporäre Tabelle löschen“, für eine Weile überspringen. Nur für den Fall, dass Sie eine Art Backup der alten Tabelle haben möchten, "nur für den Fall".
Weitere Informationen:
- MySQL-Referenzhandbuch:CREATE TABLE-Syntax
- MySQL-Referenzhandbuch:INSERT-Syntax
- MySQL-Referenzhandbuch:INSERT ... SELECT Syntax