PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Подготвено изявление за Postgresql в Rails

Ако искате да използвате prepare така, тогава ще трябва да направите няколко промени:

  1. Драйверът на PostgreSQL иска да види номерирани заместители ($1 , $2 , ...) не въпросителни и трябва да дадете име на подготвеното изявление:

     ActiveRecord::Base.connection.raw_connection.prepare('some_name', "DELETE FROM my_table WHERE id = $1")
    
  2. Последователността на извикване е prepare последвано от 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 ])
    

Горният подход работи за мен с ActiveRecord и PostgreSQL, вашият PG::Connection.open версията трябва да работи, ако се свързвате правилно.

Друг начин е да цитирате сами:

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

Това е нещото, което ActiveRecord обикновено прави зад гърба ви.

Директното взаимодействие с базата данни обикновено е малко бъркотия с Rails, тъй като хората от Rails не смятат, че някога трябва да го правите.

Ако наистина просто се опитвате да изтриете ред без намеса, можете да използвате delete :

изтриване()

[...]

Редът просто се премахва с SQL DELETE оператор на първичния ключ на записа и не се изпълняват обратни извиквания.

Така че можете просто да кажете това:

MyTable.delete(id)

и ще изпратите просто delete from my_tables where id = ... в базата данни.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Barman Cloud – Част 2:Облачно архивиране

  2. разгънете postgresql масива в редове

  3. PostgreSQL параметризиран Order By / Limit във функцията на таблицата

  4. Обединете заявката само с колони, които имат всички стойности в клаузата „in“.

  5. Записи, базирани на курсора в PostgreSQL