sql >> データベース >  >> RDS >> Mysql

MySQLは列挙型にフィールドを追加します

    列挙値を追加する簡単な方法はありません。

    これは醜くてテストされていませんが、私はあなたにアイデアを与えると思います:

    <?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で」これを行うことができますが、それは私が今頭を悩ませることができる以上のものです。 :)




    1. mysqlとmysql2gemの違いは何ですか

    2. GentooでのMySQLリレーショナルデータベースの使用

    3. MySQLを使用したSpringBootCRUDの例

    4. MySQLで列のデフォルト値を削除する方法