2013-05-21 63 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'视图来获取当前查询的文本并搜索其中的表名。 –