📜  PostgreSQL – 创建触发器(1)

📅  最后修改于: 2023-12-03 15:33:44.926000             🧑  作者: Mango

PostgreSQL – 创建触发器

PostgreSQL 是一个功能非常强大的关系型数据库管理系统。它支持触发器,触发器是一种自动化的代码(函数),当满足特定条件时自动执行。触发器可以用于自动化数据维护,如数据验证、索引维护、自定义日志等等。

在本文中,我们将介绍如何在 PostgreSQL 中创建触发器,以下是详细步骤:

步骤 1:创建测试表

首先,我们需要创建一个测试用的表格,以便在接下来的步骤中使用它:

CREATE TABLE students (id SERIAL PRIMARY KEY, name VARCHAR(50), age INTEGER);

这将创建一个名为 students 的表,并定义了三个列 id、name 和 age。

步骤 2:创建新的触发器函数

创建触发器之前,我们需要定义一个触发器函数。它定义了触发器在何时何地触发。

CREATE OR REPLACE FUNCTION validate_age() RETURNS TRIGGER AS $$
BEGIN
    IF NEW.age < 18 THEN
        RAISE EXCEPTION 'Minors are not allowed.';
    END IF;

    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

在上面的代码中,我们定义了一个名为 validate_age() 的函数。它会检查插入或更改操作中的年龄列,如果他少于18,则会引发异常。如果年龄没有问题,则函数将返回触发操作的新数据。

步骤 3:创建触发器

接下来,我们将创建一个触发器,以便在插入或更新学生记录时自动执行上面的函数。

CREATE TRIGGER prevent_minors
    BEFORE INSERT OR UPDATE
    ON students
    FOR EACH ROW
    EXECUTE FUNCTION validate_age();

在上面的代码中,我们定义了一个名为 prevent_minors 的触发器,它会在每次插入或更新后,自动执行 validate_age() 函数进行检查。

以上就是在 PostgreSQL 中创建触发器的全部步骤,我们可以通过以下代码验证触发器是否成功:

INSERT INTO students (name, age) VALUES ('张三', 17);

如果您尝试执行上面的代码,您将会看到以下错误消息:

ERROR:  Minors are not allowed.
CONTEXT:  PL/pgSQL function validate_age() line 3 at RAISE

该错误消息表明触发器成功创建并成功执行。

总结:在 PostgreSQL 中创建触发器非常有用,可以帮助我们自动验证和维护数据。您可以使用 PostgreSQL 的 CREATE TRIGGER 语句来定义触发器,使用 CREATE FUNCTION 语句定义触发器函数。