在 PostgreSQL 中,触发器(triggers)是一种与表相关联的自定义代码,这些代码会在插入(INSERT)、更新(UPDATE)、删除(DELETE)等数据库操作发生时自动执行。触发器可以用于实现数据完整性、自动化任务、记录历史变更等方面。

以下是一个简单的示例,演示如何创建一个在插入行时触发的基本触发器:
-- 创建一个简单的示例表
CREATE TABLE example_table (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 创建一个 BEFORE INSERT 触发器
CREATE OR REPLACE FUNCTION before_insert_trigger_function()
RETURNS TRIGGER AS $$
BEGIN
    -- 在插入行之前执行的逻辑,例如,设置 created_at 列的值
    NEW.created_at = CURRENT_TIMESTAMP;
    
    -- 返回触发器
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

-- 创建触发器,指定在插入行之前触发
CREATE TRIGGER before_insert_trigger
BEFORE INSERT ON example_table
FOR EACH ROW
EXECUTE FUNCTION before_insert_trigger_function();

在上面的例子中,创建了一个名为 before_insert_trigger_function 的触发器函数,它包含了在插入行之前执行的逻辑。然后,通过 CREATE TRIGGER 语句创建了一个触发器,该触发器使用 BEFORE INSERT ON example_table 条件,指定在插入行之前触发。

触发器可以是 BEFORE 或 AFTER 触发,取决于触发器是在相应的操作之前还是之后执行。触发器函数中的逻辑可以根据需求进行定制,比如在插入或更新之前进行一些额外的计算或验证。

请注意,触发器可以变得复杂,尤其是在处理复杂业务逻辑或需要触发多个事件的情况下。在使用触发器时,请确保了解触发器的执行时机,以免产生不必要的副作用。


转载请注明出处:http://www.zyzy.cn/article/detail/8452/PostgreSQL