ALTER TRIGGER命令用于更改觸發器定義,例如觸發器名稱、依賴關系、觸發器開關等。

語法

  • 更改表table_name的觸發器名稱。
    ALTER TRIGGER name ON table_name RENAME TO new_name
  • 更改表table_name的觸發器name依賴的插件為extension_name
    ALTER TRIGGER name ON table_name DEPENDS ON EXTENSION extension_name
  • 更改schema下名稱唯一的觸發器name是否有效。
    ALTER TRIGGER [schema.]name ENABLE | DISABLE;
    說明
    • 同一個Schema下觸發器名稱必須唯一。
    • 內置觸發器的狀態無法修改。

參數

參數名稱 描述
schema 觸發器依賴的表所在的命名空間,默認是public。
name 觸發器依賴的表的名稱。
new_name 觸發器的新名稱。
extenion_name 觸發器依賴的插件名稱。
ENABLE/DIABLE 觸發器是否有效的狀態。
  • ENABLE:有效
  • DISABLE:無效

示例

  • 更改觸發器名稱。
    ALTER TRIGGER emp_stamp ON emp RENAME TO emp_track_chgs;
  • 更改觸發器依賴的插件。
    ALTER TRIGGER emp_stamp ON emp DEPENDS ON EXTENSION emplib;
  • 開啟或關閉觸發器。
    testdb=> select tgrelid,tgname,tgenabled from pg_trigger;
     tgrelid |  tgname   | tgenabled
    ---------+-----------+-----------
       16386 | emp_audit | O
    (1 row)
    testdb=> insert into emp values(1,'Alice');
    ERROR:  INSERT is illegal on emp.
    CONTEXT:  PL/pgSQL function process_emp_audit() line 12 at RAISE
    testdb=> ALTER TRIGGER emp_audit DISABLE;
    ALTER TRIGGER
    testdb=> insert into emp values(1,'Alice');
    INSERT 0 1
    testdb=> ALTER TRIGGER emp_audit ENABLE;
    ALTER TRIGGER
    testdb=> insert into emp values(2,'Bob');
    ERROR:  INSERT is illegal on emp.
    CONTEXT:  PL/pgSQL function process_emp_audit() line 12 at RAISE