假设我们有一个名为 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