2013-05-21 64 views
0

你好,我有一個觸發的Postgres避免觸發刪除級聯

一個問題,我有2個

  • t_mandant
  • t_user_has_mandant

當我刪除連續在t_user_has_mandant我叫觸發 beforeDeleteUserMandant() 但我需要一個可能忽略觸發呼叫時我刪除mandantt_mandant

因爲t_user_has_mandant外鍵t_mandant這是刪除級聯

使用IM的Postgres 8.4

+0

因此,如果刪除是由't_mandant'中的'CASCADE' FK引起的,那麼您想更改't_user_has_mandant'上的觸發器的邏輯嗎? –

+0

yes只是在觸發器中什麼也不做,或者完全忽略它 –

回答

1

閱讀this手冊的頁面。

使用可變

TG_TABLE_NAME

數據類型名稱;引起 觸發器調用的表的名稱。

你可以決定是否DELETE來自t_user_has_mandantt_mandant

+0

我試過了:RAISE NOTICE'table_name:%',TG_TABLE_NAME;結果是通知:table_name:t_user_has_mandant,但我的SQL查詢從t_mandant刪除,其中id_mandant = 555 ... –

+0

嗯。也許。我沒有測試過我的答案。 –

+0

另一個(但有點難看)的方法是查詢'pg_stat_activity'視圖來獲取當前查詢的文本並搜索其中的表名。 –