例程中可以有事务块吗?

时间:2018-11-19 17:13:38

标签: postgresql transactions routines

我正在尝试创建具有事务块的例程,但是该例程的BEGIN语句与事务的begin语句冲突。 是否有可能在postgres的例程中进行事务处理,所以如果一个语句失败,一切都会回滚?

我想做的是这样的:

CREATE FUNCTION transfer_money_from_user_to_user(payer_id BIGINT, payee_id BIGINT)
RETURNS TABLE(id INTEGER)
LANGUAGE plpgsql
AS $$
  BEGIN
  /* transaction start */
  update user_money set user_money = user_money - 100 where user_money.id = payer_id;
  update user_money set user_money = user_money + 100 where user_money.id = payee_id;
  /* transaction end */
$$;

谢谢!

0 个答案:

没有答案