我必须向数据库表中添加一些枚举选项。问题是,我将不得不对几个表和数据库执行此操作,并且它们可能不都具有相同的枚举数据类型。为什么要编写alter table查询或类似于将选项追加到枚举数据类型的内容?
如果完全用MySQL无法做到这一点,那么如何使用PHP脚本来解决这个问题呢?
发布于 2009-10-31 04:04:54
没有简单的方法来追加枚举值。
这是丑陋和未经测试的,但我认为它会给你一个想法:
<?php
$sql = "select table_schema
, table_name
, column_name
, column_type
, is_nullable
, column_default
from information_schema
where data_type = 'enum'";
$res = mysql_query($sql);
while ($row = mysql_fetch_assoc($res)) {
// these are important --> leading comma --v close paren --v
$new_enum = substr($row['column_type', 0, -1) . ",'new','enums','here')"
$sql = "alter table `{$row['table_schema']}`.`{$row['table_name']}`";
$sql .= " modify column `{$row['column_name']}`";
$sql .= " $new_enum";
$sql .= ($row['is_nullable'] == 'YES') ? " NULL" : " NOT NULL";
$sql .= " default $row['column_default']";
mysql_query($sql);
}您可能可以使用存储过程“纯在mysql中”实现这一点,但这超出了我现在的理解范围。:)
https://stackoverflow.com/questions/1651839
复制相似问题