sql >> Database >  >> RDS >> PostgreSQL

het implementeren van een UPDATE op SELECT in Postgres

Let op de standaardwaarde voor de 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;

Vraag nu de tabel op met behulp van de bovenstaande functie:

select * from select_and_update('a');

Update volgens commentaar:

Je kunt het dynamisch bouwen en in plaats van een functie gewoon de sql-code, wat het ook is, in een transactie verpakken. Geen cursors nodig.

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. Is er een limiet aan het aantal tabellen in een SQL Server-database EN-weergave?

  2. SQL UPDATE in een SELECT-rang boven Partitiezin

  3. #1273 – Onbekende sortering:‘utf8mb4_unicode_520_ci’

  4. Voorwaarde uit twee kolommen combineren mysql