使用Django 1.4中的挂起触发事件

时间:2013-11-26 02:55:24

标签: python django postgresql

@transaction.commit_on_success
def action_init_address_receipt(cls, request):
    execute_sql('alter table finance_addressreceipts disable trigger user;')
    execute_sql('select init_address_receipt();')

    # next line below is where I get the pending trigger event Error
    execute_sql('alter table finance_addressreceipts enable trigger user;')
    return {'message': 'well done'}

我做了一些研究,似乎我需要在两个单独的交易中做到这一点。我想知道是否有一些更好,更优雅的解决方案。

1 个答案:

答案 0 :(得分:1)

好的,通常,当事务中的先前语句创建了挂起的触发事件(包括外键引用)时,会发生此错误。通常,您需要确保:

  1. 任何alter table次查询都在交易开始时附近,并且

  2. 您了解整个事务流程的运行方式。