Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL thêm các trường vào Enum

không có cách nào dễ dàng để nối các giá trị enum.

điều này thật xấu và chưa được kiểm tra, nhưng tôi nghĩ nó sẽ cho bạn một ý tưởng:

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

bạn có thể làm điều này "hoàn toàn trong mysql" với một thủ tục được lưu trữ, nhưng đó là nhiều hơn những gì tôi có thể quấn quanh bộ não của mình ngay bây giờ. :)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Regexp có hỗ trợ khớp Unicode không

  2. Việc đặt lại AUTO_INCREMENT mất nhiều thời gian trong MySQL

  3. Ví dụ về MICROSECOND () - MySQL

  4. Tại sao MySQL không hỗ trợ độ chính xác mili giây / micro giây?

  5. Làm cách nào để danh mục cấp độ đầu tiên chỉ hiển thị một lần?