📜  postgres 触发器插入另一个表 - SQL (1)

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

PostgreSQL 触发器插入另一个表 - SQL

在 PostgreSQL 中,触发器(Trigger)是一种可以在表上自动执行操作的特殊类型的函数。当特定事件(如插入、更新或删除行)在表上发生时,触发器会触发并执行相关的 SQL 语句。

本文将介绍如何在 PostgreSQL 中创建一个触发器来在插入行到一个表时插入相应的数据到另一个表中。

创建目标表

首先,我们需要创建一个目标表,它将接收触发器插入的数据。以下是一个创建目标表的示例 SQL 代码:

CREATE TABLE target_table (
  id SERIAL PRIMARY KEY,
  name TEXT,
  created_at TIMESTAMP
);

上述代码使用 CREATE TABLE 语句创建了一个名为 target_table 的表。该表包含了三个列:id(序列自增主键)、name(文本类型)和 created_at(时间戳)。

创建触发器函数

接下来,我们需要创建一个触发器函数,该函数会被触发器调用并执行插入数据到目标表的操作。以下是一个创建触发器函数的示例 SQL 代码:

CREATE OR REPLACE FUNCTION insert_into_target_table()
RETURNS TRIGGER AS
$$
BEGIN
  INSERT INTO target_table (name, created_at)
  VALUES (NEW.name, NOW());
  RETURN NEW;
END;
$$
LANGUAGE plpgsql;

上述代码使用 CREATE OR REPLACE FUNCTION 语句创建了一个名为 insert_into_target_table 的函数。该函数接收一个特殊的类型 TRIGGER 作为返回值,表示该函数可以被用作触发器。函数的逻辑是在目标表中插入一个新行,其值来自于插入到原始表中的行的 name 列,并将当前时间戳作为 created_at 列的值。

创建触发器

最后,我们需要创建一个触发器,以便在每次向原始表插入行时调用触发器函数并自动将数据插入到目标表。以下是一个创建触发器的示例 SQL 代码:

CREATE TRIGGER insert_trigger
AFTER INSERT ON original_table
FOR EACH ROW
EXECUTE FUNCTION insert_into_target_table();

上述代码使用 CREATE TRIGGER 语句创建了一个名为 insert_trigger 的触发器。该触发器指定了在每次向名为 original_table 的表中插入行后触发,并调用之前创建的触发器函数 insert_into_target_table()

现在,每当向原始表中插入行时,触发器将会自动执行,并将相应的数据插入到目标表中。

以上就是在 PostgreSQL 中创建触发器来插入另一个表的介绍。希望对你有帮助!