Résumé : ce tutoriel vous montre étape par étape comment changer le type de données d’une colonne en utilisant l’instruction ALTER TABLE.

PostgreSQL change column type statement

Pour changer le type de données d’une colonne, vous utilisez l’instruction ALTER TABLE comme suit :

ALTER TABLE table_nameALTER COLUMN column_name TYPE new_data_type;
Code language: CSS (css)

Examinons l’instruction plus en détail :

  • Premièrement, spécifiez le nom de la table à laquelle appartient la colonne que vous souhaitez modifier après les mots-clés ALTER TABLE.
  • Deuxièmement, spécifiez le nom de la colonne dont vous voulez changer le type de données après la clause ALTER COLUMN.
  • Troisièmement, fournissez le nouveau type de données pour la colonne après le mot-clé TYPE. Les SET DATA TYPE et TYPE sont équivalents.

Pour modifier les types de données de plusieurs colonnes dans une seule déclaration, vous utilisez plusieurs ALTER COLUMN clauses comme ceci :

ALTER TABLE table_nameALTER COLUMN column_name1 TYPE new_data_type,ALTER COLUMN column_name2 TYPE new_data_type,...;
Code language: SQL (Structured Query Language) (sql)

Dans cette syntaxe, vous ajoutez une virgule (,) après chaque clause ALTER COLUMN.

PostgreSQL vous permet de convertir les valeurs d’une colonne vers les nouvelles tout en changeant son type de données en ajoutant une USING clause comme suit :

ALTER TABLE table_nameALTER COLUMN column_name TYPE new_data_type USING expression;
Code language: SQL (Structured Query Language) (sql)

La USING clause spécifie une expression qui vous permet de convertir les anciennes valeurs vers les nouvelles.

Si vous omettez la clause USING, PostgreSQL effectuera un cast des valeurs vers les nouvelles valeurs de manière implicite. Dans le cas où le cast échoue, PostgreSQL émettra une erreur et vous recommande de fournir la clause USING avec une expression pour la conversion des données.

L’expression après le mot-clé USING peut être aussi simple que column_name::new_data_type comme price::numeric ou aussi complexe qu’une fonction personnalisée.

Exemples de changement de type de colonne PostgreSQL

Créons une nouvelle table nommée assets et insérons quelques lignes dans la table pour la démonstration.

CREATE TABLE assets ( id serial PRIMARY KEY, name TEXT NOT NULL, asset_no VARCHAR NOT NULL, description TEXT, location TEXT, acquired_date DATE NOT NULL);INSERT INTO assets(name,asset_no,location,acquired_date)VALUES('Server','10001','Server room','2017-01-01'), ('UPS','10002','Server room','2017-01-01');
Code language: SQL (Structured Query Language) (sql)

Pour . changer le type de données de la colonne name en VARCHAR, vous utilisez l’instruction suivante :

ALTER TABLE assets ALTER COLUMN name TYPE VARCHAR;
Code language: SQL (Structured Query Language) (sql)

L’instruction suivante change les types de données des colonnes description et location de TEXTVARCHAR :

ALTER TABLE assets ALTER COLUMN location TYPE VARCHAR, ALTER COLUMN description TYPE VARCHAR;
Code language: SQL (Structured Query Language) (sql)

Pour changer le type de données de la colonne asset_no en entier, vous utilisez l’instruction suivante :

ALTER TABLE assets ALTER COLUMN asset_no TYPE INT;
Code language: SQL (Structured Query Language) (sql)

PostgreSQL a émis une erreur et une indication très utile :

ERROR: column "asset_no" cannot be cast automatically to type integerHINT: You might need to specify "USING asset_no::integer".
Code language: SQL (Structured Query Language) (sql)

L’instruction suivante ajoute la clause USING à l’instruction ci-dessus:

ALTER TABLE assetsALTER COLUMN asset_no TYPE INT USING asset_no::integer;
Code language: SQL (Structured Query Language) (sql)

Cela a fonctionné comme prévu.

Dans ce tutoriel, vous avez appris à utiliser l’instruction ALTER TABLE ALTER COLUMN pour changer le type d’une colonne.

  • Ce tutoriel vous a-t-il été utile ?
  • OuiNon

.

Catégories : Articles

0 commentaire

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *