在 PostgreSQL 中,触发器(Trigger)是一种在表上定义的特殊类型的存储过程,它在插入、更新或删除数据时自动执行。以下是一个简单的 PostgreSQL 事件触发器的例子:

假设我们有一个名为 orders 的表,包含以下字段:
CREATE TABLE orders (
    order_id SERIAL PRIMARY KEY,
    order_date TIMESTAMP,
    total_amount NUMERIC
);

我们现在希望创建一个触发器,当往 orders 表插入新订单时,自动更新一个名为 order_log 的日志表。order_log 表结构如下:
CREATE TABLE order_log (
    log_id SERIAL PRIMARY KEY,
    order_id INTEGER,
    log_message TEXT,
    log_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

接下来,我们将创建一个在插入新订单时触发的触发器。触发器将在订单插入后,将订单信息插入 order_log 表中。
-- 创建触发器函数
CREATE OR REPLACE FUNCTION order_insert_trigger_function()
RETURNS TRIGGER AS $$
BEGIN
    -- 在order_log表中插入相应的日志记录
    INSERT INTO order_log (order_id, log_message)
    VALUES (NEW.order_id, 'New order created');

    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

-- 创建触发器
CREATE TRIGGER order_insert_trigger
AFTER INSERT ON orders
FOR EACH ROW
EXECUTE FUNCTION order_insert_trigger_function();

这个触发器定义了一个名为 order_insert_trigger_function 的函数,该函数在订单插入时被调用。在函数中,我们插入了一条日志记录到 order_log 表,记录新订单的创建。最后,我们创建了一个触发器,将该触发器与 orders 表的插入操作关联起来。

请注意,这只是一个简单的示例。在实际应用中,你可能需要更复杂的触发器来满足特定的业务需求。


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