假设你有一个表 orders:
CREATE TABLE orders (
order_id serial PRIMARY KEY,
order_date date,
total_amount numeric
);
然后,你想在插入新订单时更新另一个表 customer 中的总订单金额。你可以使用触发器函数来实现这个功能。
首先,创建触发器函数:
CREATE OR REPLACE FUNCTION update_customer_total()
RETURNS TRIGGER AS $$
BEGIN
UPDATE customer
SET total_order_amount = total_order_amount + NEW.total_amount
WHERE customer_id = NEW.customer_id;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
在上述函数中,NEW 是一个特殊的变量,代表触发器中插入、更新或删除的新行。
接下来,创建触发器,将触发器函数与 orders 表相关联:
CREATE TRIGGER update_customer_total_trigger
AFTER INSERT ON orders
FOR EACH ROW
EXECUTE FUNCTION update_customer_total();
上述触发器会在每次往 orders 表中插入新行后执行 update_customer_total() 函数,从而更新 customer 表中的总订单金额。
请根据你的实际需求和数据库表结构调整触发器函数和触发器的定义。在实际使用中,还需要考虑异常处理、性能优化等方面的问题。
转载请注明出处:http://www.zyzy.cn/article/detail/8196/PostgreSQL