我必须向数据库表添加一些枚举选项。问题是,我必须对多个表和数据库执行此操作,并且它们可能并不都具有相同的枚举数据类型。是否有理由编写更改表查询或类似于将选项附加到枚举数据类型的内容?
如果没有办法纯粹在 MySQL 中完成此操作,您将如何使用 PHP 脚本解决这个问题?
没有简单的方法来附加枚举值。
这是丑陋且未经测试的,但我认为它会给你一个想法:
<?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 中”来完成此操作,但这超出了我现在所能理解的范围。 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)