web-dev-qa-db-fra.com

Comment ajouter des colonnes à une position spécifique dans une table existante

J'ai créé une table avec 85 colonnes mais j'ai manqué une colonne. La colonne manquante doit être la 57ème ligne (la place de la colonne) . Je ne veux pas supprimer cette table et ne pas le créer à nouveau, je dois modifier cette table et je dois ajouter cette colonne dans la 57ème ligne

ALTER table table_name
Add column column_name57 integer

Comment appeler cette colonne dans la 57ème ligne

31
PathmanKIP

ALTER TABLE ajoute par défaut de nouvelles colonnes à la fin du tableau. Utilisez la directive AFTER pour le placer dans une certaine position dans la table:

ALTER table table_name
    Add column column_name57 integer AFTER column_name56

À partir de mysql doc

Pour ajouter une colonne à une position spécifique dans une ligne du tableau, utilisez FIRST ou AFTERcol_name. La valeur par défaut est d'ajouter la colonne en dernier. Vous pouvez également utiliser FIRST et AFTER dans les opérations CHANGE ou MODIFY pour réorganiser les colonnes d'une table. 

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

J'ai cherché Google pour cela pour PostgreSQL mais cela semble être impossible .

44
AmazingDreams

Essaye ça

ALTER TABLE tablename ADD column_name57 INT AFTER column_name56

Vois ici

2
Nagaraj S
ALTER TABLE table_name ADD COLUMN column_name57 INTEGER AFTER column_name56
1
java seeker

si vous dites ADD COLUMN nom_colonne, il générera une erreur

tu dois essayer 

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

rappelez-vous si la table a déjà peu d’enregistrements et que vous devez créer une nouvelle colonne, vous devez soit la rendre nulle, soit définir la valeur par défaut, comme je l’ai fait dans ma requête 

0
Deepak Sharma
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
Anand agrawal
ALTER TABLE table_name ADD COLUMN column_name integer
0
andrey_sz