sql >> Databasteknik >  >> RDS >> Mysql

MySQL lägger till fält i en Enum

det finns inget enkelt sätt att lägga till enumvärden.

det här är fult och oprövat, men jag tror att det kommer att ge dig en idé:

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

du skulle förmodligen kunna göra detta "rent i mysql" med en lagrad procedur, men det är mer än jag kan linda min hjärna runt just nu. :)




  1. Hur man ställer in värdet på det sammansatta variabelfältet med hjälp av dynamisk SQL

  2. Använda rekursion för att bygga navigering

  3. Vill du ta bort flera rader med ID?

  4. Lagra den valda frågans utdata i en array i postgres