Lưu ý giá trị mặc định cho cột 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;
Bây giờ hãy truy vấn bảng bằng hàm trên:
select * from select_and_update('a');
Cập nhật theo bình luận:
Bạn có thể xây dựng nó động và thay vì một hàm chỉ quấn mã sql, bất kể nó là gì, trong một giao dịch. Không cần con trỏ.
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;