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;