How to insert columns at a specific position in existing table?

前端 未结 8 2081
野趣味
野趣味 2020-12-25 09:54

I created a table with 85 columns but I missed one column. The missed column should be the 57th one. I don\'t want to drop that table and create it again. I\'m looking to ed

相关标签:
8条回答
  • 2020-12-25 10:25

    As workaround one could consider the use of column renaming. I.e. add the new column at the end, and then until the new column is at the right position, add a temporary column for each column whose position is after the new column, copy the value from the old column to the temporary one, drop the old column and finally rename the temporary column.

    see also: https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1770086700346491686

    0 讨论(0)
  • 2020-12-25 10:26

    I tried to alter the table like so:

    table_name add column column_name after column column_name;
    

    The first column_name is the new column name, the second column_name is the existing column where you plan to insert into after.

    0 讨论(0)
  • 2020-12-25 10:32
    ALTER TABLE table_name ADD COLUMN column_name57 INTEGER AFTER column_name56
    
    0 讨论(0)
  • 2020-12-25 10:32

    if you are saying ADD COLUMN column_name then it will throw error

    u have to try

     ALTER TABLE temp_name ADD My_Coumn INT(1) NOT NULL DEFAULT 1
    

    remember if table already has few record and u have to create new column then either u have to make it nullable or u have to define the default value as I did in my query

    0 讨论(0)
  • 2020-12-25 10:33
    SET
        @column_name =(
        SELECT COLUMN_NAME
    FROM
        information_schema.columns
    WHERE
        table_schema = 'database_name' AND TABLE_NAME = 'table_name' AND ordinal_position = 56
    );
    SET
        @query = CONCAT(
            'ALTER TABLE `table_name` ADD `new_column_name` int(5) AFTER ',
            @column_name
        );
    PREPARE
        stmt
    FROM
        @query;
    EXECUTE
        stmt;
    DEALLOCATE
        stmt;
    
    0 讨论(0)
  • 2020-12-25 10:37

    Try this

    ALTER TABLE tablename ADD column_name57 INT AFTER column_name56
    

    See here

    0 讨论(0)
提交回复
热议问题