Ale*_*lex 1 database postgresql
我有桌子
CREATE TABLE order (
id SERIAL PRIMARY KEY NOT NULL,
total_price DECIMAL(12, 2),
date TIMESTAMP WITH TIME ZONE DEFAULT now(),
product_amount INT
);
Run Code Online (Sandbox Code Playgroud)
和另一个表格的订单历史记录
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
);
Run Code Online (Sandbox Code Playgroud)
我需要一个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();
Run Code Online (Sandbox Code Playgroud)
这是SQLFiddle演示
进一步阅读:
| 归档时间: |
|
| 查看次数: |
1949 次 |
| 最近记录: |