2013-11-26 47 views
0
@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'} 

我做了一些研究,看來我需要在兩個單獨的事務中執行此操作。我想知道是否有更好的,優雅的解決方案。在Django 1.4中使用待處理的觸發器事件

+0

開始事務,然後用你的雙手提交 – neoascetic

+0

好吧,我已經這樣做,我只是不知道是否有更好的方法 – castiel

+0

我一定操作過程中有普通的SQL某些交易中啓用和禁用觸發器的內部。我沒有遇到過這樣的問題。這個觸發器有什麼作用? –

回答

1

好吧,通常這個錯誤發生在事務中的前面的語句創建了待處理的觸發事件(包括外鍵引用)時。通常,您要確保:

  1. 任何alter table查詢接近交易的開始,

  2. 你知道如何在整個交易流程運行的。

相關問題