Spalte ist in PostgreSQL-DELETE-Abfrage nicht vorhanden
In PostgreSQL erfordert das Ausführen einer DELETE-Abfrage mit einer „WHERE IN“-Klausel besondere Aufmerksamkeit. Ein häufiger Fehler, der auf die Vertrautheit mit anderen SQL-Dialekten zurückzuführen ist, ist die Verwendung von doppelten Anführungszeichen für Zeichenfolgenkonstanten.
Im bereitgestellten Beispiel versucht die Abfrage, Zeilen aus der Tabelle „user_job_titles“ basierend auf einer Liste von IDs zu löschen in doppelte Anführungszeichen eingeschlossen:
DELETE FROM user_job_titles WHERE id IN ( "c836d018-1d12-4507-a268-a4d80d6d3f54", "d0961a90-7d31-4c4c-9c1b-671115e3d833", "62dda420-6e62-4017-b41d-205c0aa82ead" );
Doppelte Anführungszeichen haben jedoch in PostgreSQL eine besondere Bedeutung. Sie werden verwendet, um Tabellen- und Spaltennamen zu maskieren. Infolgedessen schlägt die Abfrage mit der Fehlermeldung fehl, dass die Spalte mit dem Namen „c836d018-1d12-4507-a268-a4d80d6d3f54“ nicht existiert.
Um die Abfrage zu beheben, ersetzen Sie die doppelten Anführungszeichen durch einfache Anführungszeichen für String-Konstanten:
DELETE FROM user_job_titles WHERE id IN ('c836d018-1d12-4507-a268-a4d80d6d3f54', 'd0961a90-7d31-4c4c-9c1b-671115e3d833', '62dda420-6e62-4017-b41d-205c0aa82ead' );
Denken Sie daran, dass doppelte Anführungszeichen nur verwendet werden, um Schließen Sie Tabellen- und Spaltennamen in PostgreSQL ein, während für Zeichenfolgenliterale einfache Anführungszeichen verwendet werden. Die Verwendung des richtigen Anführungszeichentyps ist entscheidend für die korrekte Ausführung von SQL-Abfragen.
Das obige ist der detaillierte Inhalt vonWarum schlägt meine PostgreSQL-DELETE-Abfrage mit der Meldung „Spalte existiert nicht' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!