PostgreSQL DELETE 查詢中不存在欄位
在PostgreSQL 中,執行帶有「WHERE IN」子句的DELETE 需要特別注意。由於熟悉其他 SQL 方言而導致的一個常見錯誤是對字串常數使用雙引號。
在提供的範例中,查詢嘗試根據ID 清單從「user_job_titles」表中刪除資料列用雙引號括起來:
DELETE FROM user_job_titles WHERE id IN ( "c836d018-1d12-4507-a268-a4d80d6d3f54", "d0961a90-7d31-4c4c-9c1b-671115e3d833", "62dda420-6e62-4017-b41d-205c0aa82ead" );
但是,雙引號在PostgreSQL 中具有特殊意義。它們用於轉義表名和列名。因此,查詢失敗,並顯示錯誤,指出名稱為「c836d018-1d12-4507-a268-a4d80d6d3f54」的欄位不存在。
要修復查詢,請將雙引號替換為單引號對於字串常數:
DELETE FROM user_job_titles WHERE id IN ('c836d018-1d12-4507-a268-a4d80d6d3f54', 'd0961a90-7d31-4c4c-9c1b-671115e3d833', '62dda420-6e62-4017-b41d-205c0aa82ead' );
記住,雙引號僅用於括起來PostgreSQL 中的表名和列名,而單引號用於字串文字。使用正確的參考類型對於正確執行 SQL 查詢至關重要。
以上是為什麼我的 PostgreSQL DELETE 查詢失敗並顯示'列不存在”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!