Rollback如何与Postgresql中的嵌套函数一起使用

时间:2015-09-22 08:02:34

标签: sql postgresql

众所周知,如果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' INSERTtable_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" 自己选择交易数量吗?每个函数都是一个独立的事务?

0 个答案:

没有答案