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

mengimplementasikan UPDATE pada SELECT di Postgres

Perhatikan nilai default untuk kolom qry_count:

CREATE TABLE t (
    a INTEGER PRIMARY KEY, 
    b TEXT, 
    entered_by INTEGER, 
    qry_count INTEGER default 0
);

create function select_and_update(parameter text)
returns setof t as $$
    update t
    set qry_count = qry_count + 1
    from (
        select a
        from t
        where b = $1
        ) s
    where t.a = s.a
    ;
    select *
    from t
    where b = $1
    ;
$$ language sql;

Sekarang kueri tabel menggunakan fungsi di atas:

select * from select_and_update('a');

Perbarui menurut komentar:

Anda dapat membangunnya secara dinamis dan alih-alih fungsi, cukup bungkus kode sql, apa pun itu, dalam suatu transaksi. Tidak perlu kursor.

begin;
    update t
    set qry_count = qry_count + 1
    from (
        select a
        from t
        where b = 'a'
        ) s
    where t.a = s.a
    ;
    select *
    from t
    where b = 'a'
    ;
commit;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menyimpan properti dinamis objek dalam SQL

  2. Pertemuan PostgreSQL Praha

  3. Postgresql, ambil nilai untuk kunci tertentu dari json array

  4. Bagaimana cara menghitung Selisih TANGGAL di PostgreSQL?

  5. Ekstrak hari dalam seminggu dari bidang tanggal di PostgreSQL dengan asumsi minggu dimulai pada hari Senin