PostgreSQL Drop Trigger删除触发器

在本节中,我们将了解PostgreSQL DROP TRIGGER命令的工作原理,并查看从 PostgreSQL 中的指定表中删除和删除触发器的示例。

什么是 PostgreSQL Drop Trigger 命令?

在 PostgreSQL 中,我们可以使用Drop Trigger命令来移除已有的触发器

PostgreSQL Drop 触发器命令的语法

下图用于从特定表中删除触发器:

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

在上面的语法中,我们使用了以下参数:

参数 描述
Trigger_name
  • 它用于定义我们需要删除的触发器名称,它在DROP TRIGGER关键字之后被提及。
If EXISTS
  • If EXISTS 参数用于仅在触发器存在时临时删除触发器。
  • 如果我们在不指定IF EXISTS命令的情况下尝试删除不存在的触发器,我们将在结果中得到一个错误。
  • 如果我们使用IF EXISTS删除不存在的触发器,PostgreSQL 会发出一个通知作为替代。
Table_name
  • 表名参数用于定义触发器所属的表名。
  • 如果表链接到定义的模式,我们可以使用表的模式限定名称,例如schema_name.table_name。
CASCADE
  • 如果我们想删除自动依赖触发器的对象,我们可以使用CASCADE选项。
RESTRICT
  • 如果任何对象依赖于触发器或者我们想要拒绝或删除该触发器,我们可以使用RESTRICT选项。
  • 默认情况下,DROP TRIGGER命令使用 RESTRICT 选项。
DROP TRIGGER trigger_name;  

PostgreSQL Drop Trigger 命令示例

让我们看一个简单的例子来理解PostgreSQL DROP Trigger命令的工作原理。

为此,我们将使用我们在PostgreSQL 教程的前面部分中创建的Employee表。

第1步:创建一个新函数

首先,我们将创建一个函数,用于检查员工的 emp_name,其中员工姓名长度必须至少为10并且不能为空。

CREATE FUNCTION check_emp_name()  
    RETURNS TRIGGER  
AS $$  
BEGIN  
IF length(NEW.emp_name) < 10 OR NEW.emp_name IS NULL THEN  
  RAISE EXCEPTION 'The emp_name cannot be less than 10 characters';  
    END IF;  
    IF NEW.emp_nAME IS NULL THEN  
        RAISE EXCEPTION 'emp_name cannot be NULL';  
    END IF;  
    RETURN NEW;  
END;  
$$  
LANGUAGE plpgsql; 

执行上述命令后,我们将收到以下消息:check_emp_name()函数已成功创建到Organization数据库中。

第2步:新建触发器

创建check_emp_name()函数后,我们将在员工表上创建一个新触发器来检查员工的 emp_name。

每当我们在Employee表(取自Organization数据库)中更新或插入一行时,都会执行相同的触发器:

CREATE TRIGGER emp_name_check   
BEFORE INSERT OR UPDATE  
ON employee  
FOR EACH ROW   
EXECUTE PROCEDURE check_emp_name();  

执行上述命令后,我们会得到如下消息窗口,显示emp_name_check触发器已成功插入Employee表。

并且,我们还可以在组织数据库的对象树中验证上面创建的函数(check_emp_name())和触发器(emp_name_check )。

第 3 步:删除触发器

成功生成函数和触发器后,我们将借助 DROP TRIGGER 命令删除emp_name_check触发器,如下所示:

DROP TRIGGER emp_name_check  
ON employee;  

执行上述命令后,我们将得到以下输出,显示特定触发器已从Employee表中成功删除。

热门文章

优秀文章