【发布时间】:2015-06-23 22:30:02
【问题描述】:
我是 PostgreSQL 新手,我正在尝试创建更新触发器。我有两个表源和目标表具有相同的表结构。所以我希望在源有更新时在目的地更新记录。我尝试了以下触发功能:
Create FUNCTION ins_functiontest() RETURNS trigger AS '
BEGIN
IF tg_op = ''UPDATE'' THEN
INSERT INTO destination(id,name,tg_op)
VALUES (new.id,new.name, tg_op);
RETURN new;
END IF;
END
' LANGUAGE plpgsql;
列 'id' 是两个表上的主键,因此当源上有更新时,上述函数会失败,因为目标上已经存在该记录。
我尝试修改函数以更新表中比较源和目标上的 id 字段的其余列。
Update des
Set name = new.name,tg_op= update
From destination des join source src
ON des.id = src.id
Where des.id = src.id
但无法正确获取语法。非常感激任何的帮助。
我使用的是 PostgreSQL 8.4。
【问题讨论】:
-
您需要发出特定的
CREATE TRIGGER语句才能将该函数视为触发函数。
标签: postgresql triggers