Mysql脚本在添加表中的列之前检查列是否存在

时间:2012-03-05 06:46:34

标签: mysql sql

我需要在更改表之前检查列是否存在的mysql脚本(不是存储过程)。

5 个答案:

答案 0 :(得分:2)

SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'my_table' AND COLUMN_NAME = 'my_column'

如果以上返回0行,那么,您知道该列不存在。

答案 1 :(得分:2)

试试这个

SELECT * 
FROM information_schema.COLUMNS 
WHERE 
    TABLE_SCHEMA = 'db_name' 
AND TABLE_NAME = 'table_name' 
AND COLUMN_NAME = 'column_name'

答案 2 :(得分:1)

你可以这样做

SHOW columns from `yourtable` where field='yourfield'

答案 3 :(得分:1)

您可以检索字段的存在...

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就是做不到。

这种逻辑的位置是存储过程或应用程序语言。

答案 4 :(得分:0)

试试这个

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");
    }
}