📜  PostgreSQL – 启用触发器

📅  最后修改于: 2022-05-13 01:57:05.775000             🧑  作者: Mango

PostgreSQL – 启用触发器

PostgreSQL触发器是一个函数,每当发生诸如插入、更新或删除之类的事件时都会自动调用它。PostgreSQL 为我们提供了启用或禁用触发器的选项。触发事件发生时,禁用的触发器不会触发。我们必须启用它以确保它在事件发生时触发。

在 PostgreSQL 中,我们使用ALTER TABLE ENABLE TRIGGER语句来启用触发器。

Syntax:
ALTER TABLE table_name
ENABLE TRIGGER trigger_name |  ALL;

如果我们分析上面的语法:

  • 我们首先指定与要启用的触发器关联的表的名称。
  • 然后,我们指定我们需要使用的触发器的名称。我们还可以使用 ALL 来启用与上述表关联的所有触发器。

例子 :

假设我们有一个触发器check_fullname_before_insert用于检查给定的员工姓名是否为空,并且仅在非空时插入。

触发器相关的checkempty函数定义为:

check_fullname_before_insert触发器定义如下:

在这个函数中,当输入的员工姓名长度为 0 时,我们发出通知并且不返回任何内容,但当它的长度不是 0 时,则将内容插入到表中。

在启用触发器之前,表格如下所示:

以下查询将在employees表上启用触发器:

ALTER TABLE employees
ENABLE TRIGGER check_fullname_before_insert;

假设我们使用以下语句来测试触发器:

INSERT INTO employees (
 employee_id,
 full_name,
 manager_id
)
VALUES
 (21, '', NULL);

输出:

当我们尝试插入员工时,触发了check_fullname_before_insert触发器,由于员工姓名的长度为 0,因此表中没有插入任何内容并发出通知。

现在,假设我们在学生表上有多个具有不同功能的触发器。以下查询将启用此表上存在的所有触发器:

ALTER TABLE students
ENABLE TRIGGER ALL;