sql >> Database teknologi >  >> RDS >> Mysql

bulk ændring af kolonnetyper i MySQL

Løsning uden lagrede procedurer (kun ved hjælp af phpMyAdmin eller ethvert andet DBA-værktøj).

Kør følgende forespørgsel

SELECT 
    CONCAT('ALTER TABLE ',
            TABLE_NAME,
            ' CHANGE COLUMN ',
            COLUMN_NAME,
            ' ',
            column_name,
            ' TARGET_TYPE ',
            CASE
                WHEN IS_NULLABLE = 'NO' THEN ' NOT '
                ELSE ''
            END,
            ' NULL;') AS que
FROM
    information_schema.columns
WHERE
    table_schema = 'MY DB'
        AND data_type = 'SOURCE_TYPE';

Denne forespørgsel vil returnere alle udsagn til affyring. Du kan køre dem eller gemme dem i et SQL Upgrade-script

Eksempel (fra tinyint til bit):

ALTER TABLE mytable CHANGE COLUMN redacted redacted BIT  NULL;
ALTER TABLE mytable CHANGE COLUMN redacted2 redacted2 BIT NOT NULL;


  1. Opret underkategorivalgsboks ved Skift

  2. MySQL Round Robin Select

  3. Kan vi specificere graden af ​​parallelisme dynamisk?

  4. Udfør forespørgsel med join- og kommaseparerede værdier i kolonne i Laravel