Maison >base de données >tutoriel mysql >Pourquoi ma requête PostgreSQL DELETE échoue-t-elle avec « La colonne n'existe pas » ?

Pourquoi ma requête PostgreSQL DELETE échoue-t-elle avec « La colonne n'existe pas » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-18 00:29:08651parcourir

Why Does My PostgreSQL DELETE Query Fail with

La colonne n'existe pas dans la requête PostgreSQL DELETE

Dans PostgreSQL, l'exécution d'une requête DELETE avec une clause "WHERE IN" nécessite une attention particulière. Une erreur courante due à la familiarité avec d'autres dialectes SQL est l'utilisation de guillemets doubles pour les constantes de chaîne.

Dans l'exemple fourni, la requête tente de supprimer des lignes de la table "user_job_titles" en fonction d'une liste d'ID. entre guillemets doubles :

DELETE FROM user_job_titles
WHERE id IN (
"c836d018-1d12-4507-a268-a4d80d6d3f54",
"d0961a90-7d31-4c4c-9c1b-671115e3d833",
"62dda420-6e62-4017-b41d-205c0aa82ead"
);

Cependant, les guillemets doubles ont une signification particulière dans PostgreSQL. Ils sont utilisés pour échapper les noms de tables et de colonnes. En conséquence, la requête échoue avec une erreur indiquant que la colonne portant le nom "c836d018-1d12-4507-a268-a4d80d6d3f54" n'existe pas.

Pour corriger la requête, remplacez les guillemets doubles par des guillemets simples. pour les constantes de chaîne :

DELETE FROM user_job_titles
WHERE id IN ('c836d018-1d12-4507-a268-a4d80d6d3f54',
             'd0961a90-7d31-4c4c-9c1b-671115e3d833',
             '62dda420-6e62-4017-b41d-205c0aa82ead'
            );

N'oubliez pas que les guillemets doubles ne sont utilisés que pour entourez les noms de tables et de colonnes dans PostgreSQL, tandis que les guillemets simples sont utilisés pour les littéraux de chaîne. L'utilisation du type de guillemet correct est cruciale pour la bonne exécution des requêtes SQL.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn