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

Khử phân bổ các truy vấn đã chuẩn bị

Khi định vị câu lệnh, giá trị trả về của pg_query cho biết thành công hay không, giống như bất kỳ "câu lệnh tiện ích" nào. Khi thất bại, nó sẽ trả về false. Ví dụ:

 if (!pg_query($cnx, "deallocate foobar")) {
   echo "Error deallocate: " . pg_last_error($cnx);
 }
 else {
  echo "deallocate successful";
 }

Điều này hiển thị:

Lưu ý rằng tên câu lệnh để deallocate không được bao quanh bởi các dấu ngoặc kép, bởi vì nó là một mã định danh, không phải là một chuỗi ký tự. Nếu nó cần được bao quanh vì các ký tự có vấn đề, nó có thể được thực hiện với pg_escape_identifier (php> =5.4.4)

Để dọn dẹp một phiên, thậm chí không cần phải lặp lại các câu lệnh đã chuẩn bị và phân bổ chúng từng câu một, bạn có thể gọi DEALLOCATE ALL thay vào đó, vẫn với pg_query .

Cũng có một câu lệnh khác thực hiện nhiều thao tác dọn dẹp hơn trong một truy vấn: DISCARD ALL

Ngoài ra, điều này thậm chí không cần thiết nếu tập lệnh thực sự ngắt kết nối với các postgres, vì các câu lệnh đã chuẩn bị là cục bộ cho phiên mẹ của chúng và chết với nó.

Việc dọn dẹp rõ ràng là cần thiết khi sử dụng tái sử dụng kết nối giữa các tập lệnh, hoặc với các kết nối liên tục bằng PHP (pg_pconnect ) hoặc một trình gộp kết nối như pgBouncer (mặc dù bản thân trình tổng hợp có thể gọi DISCARD ALL tùy thuộc vào cấu hình của nó).



  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ập chỉ mục các khóa nước ngoài trong Postgresql

  2. Làm thế nào để chuyển một tập hợp các hàng từ một hàm này sang một hàm khác?

  3. Hệ thống đề xuất cho một ứng dụng cửa hàng sách

  4. strftime trong sqlite chuyển đổi thành postgres

  5. Cách Cos () hoạt động trong PostgreSQL