Mysql скрипт проверяет, существует ли столбец или нет перед добавлением столбца в таблицу - PullRequest
0 голосов
/ 05 марта 2012

Мне нужен сценарий mysql (не хранимая процедура), который проверяет, существует ли столбец или нет перед изменением таблицы.

Ответы [ 5 ]

2 голосов
/ 05 марта 2012

Попробуйте это

SELECT * 
FROM information_schema.COLUMNS 
WHERE 
    TABLE_SCHEMA = 'db_name' 
AND TABLE_NAME = 'table_name' 
AND COLUMN_NAME = 'column_name'
2 голосов
/ 05 марта 2012
SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'my_table' AND COLUMN_NAME = 'my_column'

Если приведенное выше возвращает 0 строк, значит, вы знаете, что столбец не существует.

1 голос
/ 05 марта 2012

Вы можете получить информацию о существовании поля ...

SELECT * 
FROM information_schema.COLUMNS 
WHERE 
    TABLE_SCHEMA = 'your_db_name' 
AND TABLE_NAME = 'your_table_name' 
AND COLUMN_NAME = 'your_column_name'

... но вы не можете добавить ALTER утверждение в зависимости от результата.SQL просто не может этого сделать.

Место для такой логики - либо в хранимой процедуре, либо в языке приложения.

1 голос
/ 05 марта 2012

Вы можете сделать это таким образом

SHOW columns from `yourtable` where field='yourfield'
0 голосов
/ 05 марта 2012

Попробуйте это

function add_column_if_not_exist($db, $column, $column_attr ="VARCHAR(255) NULL")
{
    $exists = false;
    $columns = mysql_query("show columns from $db");
    while($c = mysql_fetch_assoc($columns)){
        if($c['Field'] == $column){
            $exists = true;
            break;
        }
    }      
    if(!$exists){
        mysql_query("ALTER TABLE `$db` ADD `$column`  $column_attr");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...