Мне нужно добавить некоторые параметры перечисления в таблицу базы данных. Проблема заключается в том, что мне нужно будет сделать это в нескольких таблицах и базах данных, и они могут не иметь одинаковый тип данных enum. Есть ли необходимость писать запрос таблицы alter или что-то подобное параметрам добавления к типу данных enum?
Если в 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» с хранимой процедурой, но это больше, чем я могу обернуть мой мозг прямо сейчас. 🙂