MySQL INFORMATION_SCHEMA
база данни за спасяване:
-- 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;
Повече информация:
- Справочно ръководство за MySQL:Глава 19. Таблици INFORMATION_SCHEMA
- Справочно ръководство за MySQL:Таблицата INFORMATION_SCHEMA TABES
- Справочно ръководство за MySQL:Таблица INFORMATION_SCHEMA COLUMNS
АКТУАЛИЗИРАНЕ:
Друг вариант, вероятно по-лесен, е да изхвърлите съществуващата таблица и да я създадете отново с новата схема. За да направите това, ви трябва:
- Създайте временна таблица, точно копие на съществуващата таблица
- Попълнете временната таблица с данните от старата таблица
- Изхвърлете старата таблица
- Създайте новата таблица с нова схема
- Попълнете новата таблица с информацията от временната таблица
- Изхвърлете временната таблица.
И така, в 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;
Всъщност последната стъпка, „Отпускане на временната таблица.“, можете да пропуснете за известно време. За всеки случай бихте искали да имате някакъв вид резервно копие на старата таблица, "за всеки случай".
Повече информация:
- Справочно ръководство за MySQL:СИНтаксис СЪЗДАВАНЕ НА ТАБЛИЦА
- Справочно ръководство за MySQL:INSERT синтаксис
- Справочно ръководство за MySQL:INSERT ... SELECT Синтаксис