Lajur Tidak Wujud dalam PostgreSQL DELETE Query
Dalam PostgreSQL, menjalankan pertanyaan DELETE dengan klausa "WHERE IN" memerlukan perhatian khusus. Kesilapan biasa yang berpunca daripada kebiasaan dengan dialek SQL lain ialah penggunaan petikan berganda untuk pemalar rentetan.
Dalam contoh yang diberikan, pertanyaan cuba memadamkan baris daripada jadual "user_job_titles" berdasarkan senarai ID disertakan dalam petikan berganda:
DELETE FROM user_job_titles WHERE id IN ( "c836d018-1d12-4507-a268-a4d80d6d3f54", "d0961a90-7d31-4c4c-9c1b-671115e3d833", "62dda420-6e62-4017-b41d-205c0aa82ead" );
Walau bagaimanapun, petikan berganda mempunyai makna istimewa dalam PostgreSQL. Ia digunakan untuk melepaskan nama jadual dan lajur. Akibatnya, pertanyaan gagal dengan ralat menyatakan bahawa lajur dengan nama "c836d018-1d12-4507-a268-a4d80d6d3f54" tidak wujud.
Untuk membetulkan pertanyaan, gantikan petikan berganda dengan petikan tunggal untuk pemalar rentetan:
DELETE FROM user_job_titles WHERE id IN ('c836d018-1d12-4507-a268-a4d80d6d3f54', 'd0961a90-7d31-4c4c-9c1b-671115e3d833', '62dda420-6e62-4017-b41d-205c0aa82ead' );
Ingat, petikan berganda ialah digunakan hanya untuk melampirkan nama jadual dan lajur dalam PostgreSQL, manakala petikan tunggal digunakan untuk literal rentetan. Menggunakan jenis petikan yang betul adalah penting untuk pelaksanaan pertanyaan SQL yang betul.
Atas ialah kandungan terperinci Mengapa Pertanyaan PostgreSQL DELETE Saya Gagal dengan 'Lajur Tidak Wujud'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!