Si la colonne de la table de Postgres porte le nom year
, à quoi doit ressembler la INSERT
requête pour définir la valeur de cette colonne?
Exemple: INSERT INTO table (id, name, year) VALUES ( ... );
donne une erreur près du mot de l' année .
Si la colonne de la table de Postgres porte le nom year
, à quoi doit ressembler la INSERT
requête pour définir la valeur de cette colonne?
Exemple: INSERT INTO table (id, name, year) VALUES ( ... );
donne une erreur près du mot de l' année .
Réponses:
Mettez simplement year
entre guillemets pour éviter qu'il ne soit interprété comme un mot clé :
INSERT INTO table (id, name, "year") VALUES ( ... );
De la documentation :
Il existe un deuxième type d'identifiant: l'identifiant délimité ou entre guillemets. Il est formé en entourant une séquence arbitraire de caractères entre guillemets ("). Un identifiant délimité est toujours un identifiant, jamais un mot clé. Ainsi," select "pourrait être utilisé pour faire référence à une colonne ou une table nommée" select ", alors qu'une sélection sans guillemets serait considérée comme un mot clé et provoquerait donc une erreur d'analyse lorsqu'elle est utilisée là où un nom de table ou de colonne est attendu.
update "user" set "password" = 'value...';
fonctionne parfaitement bien ...
Si vous ne fournissez pas de guillemets dans aucun champ / colonne, il sera mis en minuscules par Postgres par défaut. Et Postgres ignorera la vérification du mot-clé en ce qui concerne le nom de la colonne.
Dans votre cas, je ne pense pas qu'il soit obligatoire d'ajouter des guillemets lorsqu'il s'agit de columns
. Mais si vous utilisez keywords
(enregistré par Postgres) comme nom de Table
, Schema
, Function
ou Trigger
etc, vous devez avoir à utiliser soit des guillemets doubles, ou vous pouvez spécifier le nom de schéma avec concaténation de points.
Supposons que l' ordre soit le mot-clé enregistré par Postgres. Et dans certains scénarios, vous devez utiliser ce mot-clé comme nom de table.
À ce moment-là, Postgres vous permettra de créer une table avec keywords
. Telle est la beauté de Postgres.
Pour accéder à la table de commande, soit vous devez utiliser un guillemet double, soit vous pouvez vous nom de schéma avant le nom de la table.
PAR EXEMPLE
1.
select * from schema_name.order;
2.
select * from "order";
De même, vous pouvez utiliser ce type de combinaison. J'espère que ceci vous aidera.
MyTable
,myTable
etmytable
sont exactement les mêmes. Avec les guillemets, ce pliage n'est pas fait. Ce"MyTable"
n'est donc plus la même chose quemytable
.