我有一张名为奖项的表。如何在 PostgreSQL 中安装触发器,其中表中的每个插入都会更新不同的表?
问问题
45291 次
2 回答
65
Here we have two tables named table1
and table2
. Using a trigger I'll update table2
on insertion into table1
.
Create the tables
CREATE TABLE table1
(
id integer NOT NULL,
name character varying,
CONSTRAINT table1_pkey PRIMARY KEY (id)
)
CREATE TABLE table2
(
id integer NOT NULL,
name character varying
)
The Trigger Function
CREATE OR REPLACE FUNCTION function_copy() RETURNS TRIGGER AS
$BODY$
BEGIN
INSERT INTO
table2(id,name)
VALUES(new.id,new.name);
RETURN new;
END;
$BODY$
language plpgsql;
The Trigger
CREATE TRIGGER trig_copy
AFTER INSERT ON table1
FOR EACH ROW
EXECUTE PROCEDURE function_copy();
于 2014-07-07T09:15:04.523 回答
6
您需要PL/PgSQL 触发器的文档,其中仅讨论了这种情况。有关触发器的一般文档也可能有用。
您可以为此使用 aBEFORE
或AFTER
触发器。不过,我可能会使用AFTER
触发器,以便我的触发器看到插入的行的最终版本。你FOR EACH ROW
当然想要。
于 2012-09-10T07:10:43.380 回答