DROP TRIGGER

功能描述

删除触发器。

注意事项

触发器的所有者或者被授予了DROP ANY TRIGGER权限的用户可以执行DROP TRIGGER操作,系统管理员默认拥有此权限。

语法格式

DROP TRIGGER [ IF EXISTS ] trigger_name ON table_name [ CASCADE | RESTRICT ];

D兼容性下新增语法

DROP TRIGGER [ IF EXISTS ] trigger_name [ CASCADE | RESTRICT ];

参数说明

  • IF EXISTS

    如果指定的触发器不存在,则发出一个notice而不是抛出一个错误。

  • trigger_name

    要删除的触发器名称。

    取值范围:已存在的触发器。

  • table_name

    要删除的触发器所在的表名称。

    取值范围:已存在的含触发器的表。

  • CASCADE | RESTRICT

    • CASCADE:级联删除依赖此触发器的对象。
    • RESTRICT:如果有依赖对象存在,则拒绝删除此触发器。此选项为缺省值。

示例

create table animals (id int, name char(30));
create table food (id int, foodtype varchar(32), remark varchar(32), time_flag timestamp);
CREATE OR REPLACE FUNCTION insert_food_fun1 RETURNS TRIGGER AS
$$
BEGIN
    insert into food(id, foodtype, remark, time_flag) values (1, 'bamboo', 'healthy', now());
    RETURN NEW;
END;
$$ LANGUAGE PLPGSQL;
CREATE TRIGGER animals_trigger1 AFTER INSERT ON animals
FOR EACH ROW
EXECUTE PROCEDURE insert_food_fun1();
CREATE OR REPLACE FUNCTION insert_food_fun2 RETURNS TRIGGER AS
$$
BEGIN
    insert into food(id, foodtype, remark, time_flag) values (2, 'water', 'healthy', now());
    RETURN NEW;
END;
$$ LANGUAGE PLPGSQL;
CREATE TRIGGER animals_trigger2 AFTER INSERT ON animals
FOR EACH ROW
EXECUTE PROCEDURE insert_food_fun2();
select tgname from pg_trigger;
      tgname      
------------------
 animals_trigger1
 animals_trigger2
(2 rows)

select count(*) from food;
 count 
-------
     0
(1 row)

insert into animals(id, name) values (1, 'panda');
select * from animals;
 id |              name              
----+--------------------------------
  1 | panda                         
(1 row)

select count(*) from food;
 count 
-------
     2
(1 row)

delete from animals;
delete from food;
drop trigger animals_trigger1;
drop trigger if exists animals_trigger2;
select tgname from pg_trigger;
 tgname 
--------
(0 rows)

相关链接

DROP TRIGGER

意见反馈
编组 3备份
    openGauss 2025-10-23 07:42:22
    取消