【问题标题】:Trigger knowing the event type dynamically触发动态了解事件类型
【发布时间】:2020-12-29 10:52:00
【问题描述】:

对于在INSERTUPDATE 之前发生的触发器,我的代码几乎相同, 而不是创建 2 个触发器,有没有办法知道触发器内部动态发生的事件类型?

例子:

CREATE OR REPLACE FUNCTION UpsertClientLog() RETURNS TRIGGER AS $$
DECLARE action_type VARCHAR(255);
BEGIN
  IF (event == 'INSERT') THEN
    action_type = 'Create'
  ELSE 
    action_type = 'Update'
  END IF;

  -- Same code from here on out ..
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER UPSERT_CLIENT_LOG BEFORE INSERT OR UPDATE ON client
  FOR EACH ROW EXECUTE PROCEDURE UpsertClientLog();

【问题讨论】:

    标签: sql postgresql triggers sql-update sql-insert


    【解决方案1】:

    你可以使用special variable TO_OP:

    TG_OP

    数据类型文本;由INSERTUPDATEDELETETRUNCATE 组成的字符串,说明触发了哪个操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 2020-09-24
      • 2018-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-10
      相关资源
      最近更新 更多