Gestion du respect de la casse dans les noms de tables et de colonnes PostgreSQL
Le traitement par PostgreSQL des noms de tables et de colonnes dépend du fait qu'ils soient ou non cités. Les identifiants sans guillemets (comme myTable
) ne sont pas sensibles à la casse, ce qui signifie que MyTable
, mytable
et MYTABLE
font tous référence au même objet. Les identifiants cités (comme "MyTable"
) sont sensibles à la casse.
Cette différence entraîne souvent des problèmes lors de la migration de bases de données, en particulier à partir de systèmes comme MSSQL où la sensibilité à la casse peut être gérée différemment. Par exemple, si une table nommée STD_TYPE_CODES
est importée et que vous essayez de l'interroger comme std_type_codes
, vous obtiendrez une erreur car PostgreSQL les interprète comme des objets distincts.
Solutions :
<code class="language-sql">SELECT * FROM "STD_TYPE_CODES";</code>
Cependant, cela est fastidieux pour de nombreuses tables.
Réduction de casse implicite de PostgreSQL : PostgreSQL convertit automatiquement les identifiants sans guillemets en minuscules en interne. Par conséquent, STD_TYPE_CODES
, std_type_codes
et HeLLo
sont tous traités comme "std_type_codes"
.
Meilleure pratique : dénomination cohérente : Pour éviter de futurs problèmes, utilisez systématiquement des noms en minuscules et sans guillemets lors de la création de nouvelles tables et vues.
Renommer les tables existantes : Pour les tables existantes avec une casse incohérente, utilisez ALTER TABLE
:
<code class="language-sql">ALTER TABLE "FOO" RENAME TO foo;</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!