📜  PostgreSQL创建触发器(1)

📅  最后修改于: 2023-12-03 14:45:36.212000             🧑  作者: Mango

PostgreSQL创建触发器

触发器是一种在数据库中自动执行特定动作的机制。您可以使用触发器在特定情况下自动执行SQL语句。PostgreSQL支持在表上创建多个触发器(例如在“INSERT”、“UPDATE”或“DELETE”上)。在本教程中,我们将学习如何使用PostgreSQL创建触发器。

语法

要创建一个触发器,请使用以下语法:

CREATE TRIGGER trigger_name
BEFORE INSERT OR UPDATE OR DELETE ON table_name
FOR EACH ROW
WHEN (condition)
EXECUTE FUNCTION trigger_function();

触发器名称可以是任何唯一的名称。表名称是要应用触发器的表的名称。您可以在触发器上定义三个事件:插入、更新或删除。WHEN子句是可选的,用于指定触发器执行的条件。您需要提供自定义触发函数的名称,该函数定义表上执行的操作。

示例

下面是创建触发器的示例操作:

CREATE OR REPLACE FUNCTION update_employee_salary()
RETURNS TRIGGER AS $$
BEGIN
   IF (NEW.salary <> OLD.salary) THEN
      INSERT INTO employee_salary_audit
      VALUES(OLD.id, OLD.salary, NEW.salary, now());
      RETURN NEW;
   END IF;

   RETURN NULL;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER employee_salary_trigger
BEFORE UPDATE ON employee
FOR EACH ROW
WHEN (OLD.salary <> NEW.salary)
EXECUTE FUNCTION update_employee_salary();

在上面的示例中,我们创建了一个名为update_employee_salary()的函数,并在该函数中定义了在“employee”表的“salary”字段更新时要执行的操作。该操作将在employee_salary_audit表中插入更新信息。

接下来,我们创建了一个名为employee_salary_trigger的触发器,并且每当更新发生时,如果“salary”字段已更新,则它将触发update_employee_salary()函数的执行。

结论

在本教程中,我们介绍了如何使用PostgreSQL创建触发器。当表中发生指定的事件时,触发器可以用于自动执行SQL语句。这对于维护数据库的数据完整性和在数据库中实现业务规则非常有用。