我有一张 table
CREATE TABLE order (
id SERIAL PRIMARY KEY NOT NULL,
total_price DECIMAL(12, 2),
date TIMESTAMP WITH TIME ZONE DEFAULT now(),
product_amount INT
);
还有另一个订单历史表
CREATE TABLE order_history (
id SERIAL PRIMARY KEY NOT NULL,
order_id INT,
total_price DECIMAL(12, 2),
date TIMESTAMP WITH TIME ZONE DEFAULT now(),
product_amount INT
);
我需要一个用于 ORDER
表的触发器函数,它可以在我将一些数据插入到 ORDER
表或更新数据时触发事件。此外,此过程必须将数据保存到表 ORDER_HISTORY
中。
最佳答案
你在找这样的东西吗?
CREATE OR REPLACE FUNCTION save_order_in_history()
RETURNS trigger
AS $$
BEGIN
INSERT INTO order_history(order_id, total_price, product_amount)
VALUES (NEW.id, NEW.total_price, NEW.product_amount);
RETURN NULL;
END $$ LANGUAGE plpgsql;
CREATE TRIGGER order_trigger AFTER INSERT OR UPDATE
ON "order" FOR EACH ROW EXECUTE PROCEDURE save_order_in_history();
这是 SQLFiddle 演示
进一步阅读:
关于database - 如何在 PostgreSQL 中创建复制触发器函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26047667/