我有一张桌子
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
中。
答案 0 :(得分:5)
你在找这样的东西吗?
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 演示
进一步阅读: