sql >> Database teknologi >  >> RDS >> PostgreSQL

implementering af en OPDATERING på SELECT i Postgres

Bemærk standardværdien for kolonnen 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;

Forespørg nu tabellen ved hjælp af ovenstående funktion:

select * from select_and_update('a');

Opdater ifølge kommentar:

Du kan bygge det dynamisk og i stedet for en funktion skal du blot indpakke sql-koden, hvad end den er, i en transaktion. Intet behov for markører.

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. Hvordan udskriver jeg alle forespørgsler i Magento?

  2. Når du bruger MySQL's FOR UPDATE-låsning, hvad er præcis låst?

  3. mysql gruppering efter uge

  4. Kalder du et REST API fra en trigger eller lagret procedure i mysql?