MySQL INFORMATION_SCHEMA
database untuk menyelamatkan:
-- 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;
Informasi lebih lanjut:
- Panduan Referensi MySQL:Bab 19. Tabel INFORMATION_SCHEMA
- Manual Referensi MySQL:Tabel INFORMATION_SCHEMA TABLES
- Manual Referensi MySQL:Tabel KOLOM INFORMASI_SCHEMA
PERBARUI:
Pilihan lain, mungkin lebih mudah, adalah membuang tabel yang ada dan membuatnya kembali dengan skema baru. Untuk melakukan ini, Anda perlu:
- Buat tabel sementara, salinan persis dari tabel yang ada
- Isi tabel sementara dengan data dari tabel lama
- Jatuhkan meja lama
- Buat tabel baru dengan skema baru
- Isi tabel baru dengan informasi dari tabel sementara
- Lepaskan tabel sementara.
Jadi, dalam kode SQL:
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;
Sebenarnya langkah terakhir, "Jatuhkan tabel sementara.", Anda bisa melewatkannya sebentar. Untuk jaga-jaga, Anda ingin memiliki semacam cadangan dari tabel lama, "berjaga-jaga".
Informasi lebih lanjut:
- Manual Referensi MySQL:BUAT Sintaks TABEL
- Manual Referensi MySQL:MASUKKAN Sintaks
- Manual Referensi MySQL:INSERT ... SELECT Syntax