众所周知,如果Transactions遇到错误,则会回滚。
但是当我们遇到以下情况时会发生什么:
CREATE OR REPLACE FUNCTION A()
RETURNS void AS
$BODY$
perform B();
perform C();
end;
$BODY$
LANGUAGE plpgsql VOLATILE
CREATE OR REPLACE FUNCTION C()
RETURNS void AS
$BODY$
insert into table_C(pk_a,ab,ac)
select id,name,phone
from users
where....
perform E();
end;
$BODY$
LANGUAGE plpgsql VOLATILE
当我致电A()
而C()
'duplicate key error'
INSERT
与table_C
之间有C()
时会发生什么?它只会回滚A()
吗?或PostgreSQL
所有它的子调用和更改也将回滚?
根据事务定义回滚机制...如果我理解正确事务是一组SQL查询。那么我在这里有多少笔交易? Metrics "ga:sessions
ga:goal6Completions
ga:goal7Completions
ga:goal10Completions
ga:totalEvents
ga:uniqueEvents"
Dimensions "ga:date"
Filters "ga:eventCategory==customerType"
自己选择交易数量吗?每个函数都是一个独立的事务?