sql >> Database >  >> RDS >> Mysql

MySQL voegt velden toe aan een Enum

er is geen gemakkelijke manier om enumwaarden toe te voegen.

dit is lelijk en niet getest, maar ik denk dat het je een idee zal geven:

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

je zou dit waarschijnlijk "puur in mysql" kunnen doen met een opgeslagen procedure, maar dat is meer dan ik nu kan bedenken. :)




  1. Hoe database te herstellen met RMAN

  2. Een databasediagram maken in MySQL Workbench

  3. MySQL-database klonen

  4. Kan geen invoertype =afbeeldingswaarde vinden in $_POST