Je reçois une erreur lors de l'exécution d'une requête de mise à jour avec le nom de la table spécifié avec le nom de la colonne:
UPDATE Temp SET Temp.Id='234',Temp.Name='Test'WHERE Id='245'
C'est l'erreur:
ERROR: column "temp" of relation "temp" does not exist
LINE 1: UPDATE Temp SET Temp.Id='23...
^
********** Error **********
ERROR: column "temp" of relation "temp" does not exist
SQL state: 42703
Character: 24
Vous ne pouvez pas (et pas besoin) d'utiliser des alias de table (ou des noms de colonne qualifiés de table de table) dans la clause SET
d'un UPDATE
. Cela a même un sens, car vous ne pouvez mettre à jour qu'une seule table dans un seul UPDATE
, il n'y a donc aucune ambiguïté dans les noms de colonne.
Heureusement, la documentation toujours utile explicitement mentionne votre cas:
Nom de colonne
Le nom d'une colonne dans la table nommée par
table_name
. Le nom de la colonne peut être qualifié avec un nom de sousfield ou un indice de tableau, si nécessaire. N'incluez pas le nom du tableau dans la spécification d'une colonne cible - par exemple,UPDATE tab SET tab.col = 1
est invalide.
Donc, la solution consiste simplement à supprimer temp.
de la clause SET
:
UPDATE temp SET id = '234', name = 'Test' WHERE id = '245'
Notes:
'mkjcvnd7y78r3tgbhvcjh'
Entrer dans votre colonne id
?temp
par opposition à Temp
. L'utilisation de celle-ci peut diminuer la lisibilité (en fonction de vos préférences et d'habitudes, bien sûr).