MySQL
INFORMATION_SCHEMA
banco de dados para o resgate:-- 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;
Mais Informações:
- Manual de referência do MySQL:Capítulo 19. Tabelas INFORMATION_SCHEMA
- Manual de referência do MySQL:A tabela INFORMATION_SCHEMA TABLES
- Manual de referência do MySQL:A tabela INFORMATION_SCHEMA COLUMNS
ATUALIZAÇÃO:
Outra opção, possivelmente mais fácil, é descartar a tabela existente e recriá-la novamente com o novo esquema. Para fazer isso, você precisa:
- Criar tabela temporária, uma cópia exata da tabela existente
- Preencha a tabela temporária com os dados da tabela antiga
- Retire a tabela antiga
- Crie a nova tabela com o novo esquema
- Preencha a nova tabela com as informações da tabela temporária
- Retire a tabela temporária.
Então, no código 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;
Na verdade, a última etapa, "Soltar tabela temporária.", você pode pular por um tempo. Apenas no caso, você gostaria de ter algum tipo de backup da tabela antiga, "just-in-case".
Mais Informações:
- Manual de referência do MySQL:CREATE TABLE Syntax
- Manual de referência do MySQL:INSERIR Sintaxe
- Manual de referência do MySQL:INSERT ... SELECT Sintaxe