ALTER TABLE : les valeurs par défaut incompatibles ne sont plus autorisées dans les nouvelles colonnes

Attention

Ce changement de comportement est présent dans le bundle 2023_08.

Pour connaître le statut actuel du bundle, reportez-vous à Historique du bundle.

La commande ALTERTABLE se comporte comme suit :

Avant la modification

Les commandes ALTER TABLE ADD COLUMN DEFAULT permettaient d’ajouter une colonne avec une valeur par défaut incompatible avec le type de données de la colonne. La valeur par défaut qui en résulte est inutilisable. Par exemple, bien que la valeur par défaut de 1 soit incompatible avec le type de données TIMESTAMP_TZ, la commande suivante aboutira :

ALTER TABLE t ADD COLUMN x TIMESTAMP_TZ DEFAULT 1;

Après la modification

les commandes ALTER TABLE ADD COLUMN DEFAULT ne permettent plus d’ajouter une colonne dont la valeur par défaut est incompatible avec le type de données de la colonne. Une tentative de définition d’une valeur par défaut incompatible pour une colonne se solde par une erreur. Par exemple :

SQL compilation error: Expression type does not match column data type, expecting DATE but got NUMBER(1,0) for column Y

Les combinaisons spécifiques suivantes échouent :

Type de données de la colonne

Type de données de la valeur DEFAULT

VARCHAR

BOOLEAN

DATE

BOOLEAN

TIME

BOOLEAN

TIMESTAMP_LTZ

BOOLEAN

TIMESTAMP_NTZ

BOOLEAN

TIMESTAMP_TZ

BOOLEAN

FLOAT

BOOLEAN

NUMBER

BOOLEAN

BOOLEAN

VARCHAR

DATE

FLOAT

TIME

FLOAT

TIMESTAMP_LTZ

FLOAT

TIMESTAMP_NTZ

FLOAT

TIMESTAMP_TZ

FLOAT

DATE

NUMBER

TIME

NUMBER

TIMESTAMP_LTZ

NUMBER

TIMESTAMP_NTZ

NUMBER

TIMESTAMP_TZ

NUMBER

Réf : 1425