PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

postgres không nhận ra bảng tạm trong chức năng

Postgres chạy một số kiểm tra đơn giản đối với hàm bạn đang cố tạo và nó tìm thấy (chính xác) rằng bảng work_list không (chưa) tồn tại. Tôi thấy hai tùy chọn:

1. "Giả mạo nó cho đến khi bạn thành công"

Trên thực tế, hãy tạo bảng (tạm thời) trước khi bạn tạo hàm. Bảng tạm thời sẽ biến mất vào cuối phiên, nhưng khi hàm được tạo, bạn đã vượt qua bài kiểm tra này một cách xuất sắc.
Rõ ràng, bạn phải bỏ bảng đó trước khi chạy hàm tương tự. phiên để tránh xung đột. Tuy nhiên, tốt hơn:hãy sử dụng CREATE TEMP TABLE IF NOT EXISTS trong chức năng của bạn (Postgres 9.1+). Bạn có thể muốn cắt bớt bảng nếu nó đã tồn tại ...

Tuy nhiên (xem các bình luận bên dưới), trích dẫn hướng dẫn sử dụng

Điểm nhấn đậm của tôi.

2. Sử dụng PL / pgSQL thay thế

Kiểm tra ít kỹ lưỡng hơn trong plpgsql. Nếu Postgres vẫn phàn nàn (điều này không xảy ra trong trường hợp này), bạn cũng có thể thực thi SQL động với EXECUTE .

Ngoài ra:Trong nhiều trường hợp, có một giải pháp hiệu quả hơn mà không cần đến bảng tạm thời ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để lọc cột mảng PostgreSQL bằng API tiêu chí JPA?

  2. ILIKE Match Word Boundaries PostgreSQL 9

  3. PostgreSQL json_array_elements trong mệnh đề FROM - tại sao đây không phải là tham gia cartesian?

  4. Làm thế nào để viết một quy tắc xóa trên một dạng xem?

  5. Xác thực người dùng và mật khẩu PostgreSQL mà không cần cơ sở dữ liệu