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 | 觸發器是否有效的狀態。
|
示例
- 更改觸發器名稱。
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