Re: What happens If a table changes during a query/procedure execution
От | Vlad Arkhipov |
---|---|
Тема | Re: What happens If a table changes during a query/procedure execution |
Дата | |
Msg-id | 4D7760B5.20804@dc.baikal.ru обсуждение исходный текст |
Ответ на | Re: What happens If a table changes during a query/procedure execution (Nicolas Barbier <nicolas.barbier@gmail.com>) |
Ответы |
Re: What happens If a table changes during a
query/procedure execution
|
Список | pgsql-hackers |
09.03.2011 18:54, Nicolas Barbier: > 2011/3/9 Vlad Arkhipov<arhipov@dc.baikal.ru>: > > >> Let there are two transactions that were created with read commited >> isolation level. In the first one we're executing a SELECT query: >> SELECT * FROM t UNION ALL SELECT * FROM t; >> >> In the second transaction we're modifying the same table: >> INSERT INTO t DEFAULT VALUES; >> COMMIT; >> >> Is it possible that the last UNION part in the first query will retrieve not >> the same rows as the first one? >> > No, because statements never see changes made by other transactions > while they are in flight. > > Is it also true if a statement contains subqueries or function calls? For instance, CREATE FUNCTION f() RETURNS NUMERIC AS $$ BEGIN RETURN (SELECT SUM(a) FROM t); END; $$ LANGUAGE 'plpgsql'; SELECT a, f() FROM t; or SELECT a, (SELECT SUM(a) FROM t) FROM t;
В списке pgsql-hackers по дате отправления: