我有一个函数insert_val,它将一些值插入到某些表中。这些表具有触发器,当出现错误时会引发异常。每当触发器引发异常并转到下一个curs1时,如何回滚该函数?这可能吗?提前致谢
script:
- python setup.py test
- if [[ $TRAVIS_PYTHON_VERSION == '3.4' ]]; then (cd src && CC=gcc-4.8 CXX=g++-4.8 make -f Makefile-custom test); fi
答案 0 :(得分:0)
您无法从触发器或函数ROLLBACK
,因为在函数内无法进行事务控制。
您实际上想要的是在异常后跳过并继续。您可以使用PL / PgSQL per the manual中的BEGIN ... EXCEPTION
块来执行此操作。在内部,它使用子转换,就像SAVEPOINT
和ROLLBACK TO SAVEPOINT
。