PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

postgres tidak mengenali tabel temp dalam fungsi

Postgres menjalankan beberapa pemeriksaan sederhana pada fungsi yang Anda coba buat, dan menemukan (dengan benar) bahwa tabel work_list tidak (belum) ada. Saya melihat dua opsi:

1. "Berpura-puralah sampai kamu berhasil"

Sebenarnya buat tabel (sementara) sebelum Anda membuat fungsi. Tabel sementara akan hilang di akhir sesi, tetapi setelah fungsi dibuat, Anda telah lulus tes ini untuk selamanya.
Jelas, Anda harus menghapus tabel itu sebelum menjalankan fungsi di tempat yang sama pertemuan untuk menghindari konflik. Lebih baik, meskipun:gunakan CREATE TEMP TABLE IF NOT EXISTS dalam fungsi Anda (Postgres 9.1+). Anda mungkin ingin memotong tabel jika sudah ada ...

Namun (lihat komentar di bawah), mengutip manual

Penekanan saya yang berani.

2. Gunakan PL/pgSQL sebagai gantinya

Pengecekan kurang teliti di plpgsql. Jika Postgres masih mengeluh (yang tidak dalam kasus ini), Anda juga dapat eksekusi SQL secara dinamis dengan EXECUTE .

Selain:Dalam banyak kasus, ada solusi yang lebih berkinerja tanpa tabel sementara ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kueri SQL tak terduga ke database Postgres di Rails/Heroku

  2. Memesan urutan numerik yang dibatasi titik (misalnya, nomor versi)

  3. Meminta parameter postgresql khusus dengan pernyataan SELECT

  4. Bagaimana menghindari banyak sisipan di PostgreSQL

  5. Cari di atas jenis Postgres JSON bersarang / multi-level menggunakan Rekaman Aktif