在 postgres 中使用触发器更新列

时间:2021-06-25 21:29:53

标签: postgresql triggers

我的表 asf 有这个代码,列 price 和列 category

CREATE OR REPLACE FUNCTION aft_update()
  RETURNS trigger AS
$$
BEGIN
UPDATE asf SET price = new.price='300' WHERE category = 'pro';
RETURN NEW;
END;

$$
LANGUAGE 'plpgsql';

CREATE TRIGGER updt_log
  AFTER UPDATE
  ON asf
  FOR EACH ROW
  EXECUTE PROCEDURE aft_update();

但是由于某种原因,即使触发器成功运行,更新也不起作用!我想更新多行。

1 个答案:

答案 0 :(得分:1)

为此,您根本不需要任何触发器或函数

<块引用>
CREATE TABLE asf (id serial, price DECIMAL(10,2),category varchar(10))
<块引用>
INSERT INTO asf (price,category) VALUES (10.2,'pro'),(11.2,'pro')
<块引用>
UPDATE asf SET price = 300 where category = 'pro'

2 行受影响

<块引用> <块引用>
SELECT * FROM asf
id |  price | category
-: | -----: | :-------
 1 | 300.00 | pro     
 2 | 300.00 | pro     

db<>fiddle here