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

Tuyên bố chuẩn bị về Postgresql trong Rails

Nếu bạn muốn sử dụng prepare như vậy thì bạn sẽ cần thực hiện một số thay đổi:

  1. Trình điều khiển PostgreSQL muốn xem các trình giữ chỗ được đánh số ($1 , $2 , ...) không phải dấu chấm hỏi và bạn cần đặt tên cho câu đã chuẩn bị của mình:

     ActiveRecord::Base.connection.raw_connection.prepare('some_name', "DELETE FROM my_table WHERE id = $1")
    
  2. Trình tự gọi là prepare theo sau là exec_prepared :

    connection = ActiveRecord::Base.connection.raw_connection
    connection.prepare('some_name', "DELETE FROM my_table WHERE id = $1")
    st = connection.exec_prepared('some_name', [ id ])
    

Phương pháp trên phù hợp với tôi với ActiveRecord và PostgreSQL, PG::Connection.open của bạn phiên bản sẽ hoạt động nếu bạn đang kết nối đúng cách.

Một cách khác là tự mình trích dẫn:

conn = ActiveRecord::Base.connection
conn.execute(%Q{
    delete from my_table
    where id = #{conn.quote(id)}
})

Đó là điều mà ActiveRecord thường làm sau lưng bạn.

Tương tác trực tiếp với cơ sở dữ liệu có xu hướng hơi rắc rối với Rails vì Rails mọi người không nghĩ rằng bạn nên làm điều đó.

Nếu bạn thực sự chỉ đang cố gắng xóa một hàng mà không bị can thiệp, bạn có thể sử dụng delete :

xóa ()

[...]

Hàng chỉ được xóa bằng DELETE trong SQL trên khóa chính của bản ghi và không có lệnh gọi lại nào được thực thi.

Vì vậy, bạn chỉ có thể nói điều này:

MyTable.delete(id)

và bạn sẽ gửi một delete from my_tables where id = ... vào cơ sở dữ liệu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi hex trong biểu diễn văn bản thành số thập phân

  2. Cách triển khai PostgreSQL để có tính khả dụng cao

  3. PostgreSQL unnest () với số phần tử

  4. Không thể tìm thấy thư viện máy khách PostgreSQL (libpq)

  5. Làm cách nào để thay đổi vị trí của một cột trong bảng cơ sở dữ liệu PostgreSQL?