我想创建触发器,每次更改任何列时触发 - 无论是新更新还是新插入。我创造了这样的事情:触发每次更新或插入
CREATE TRIGGER textsearch
BEFORE INSERT OR UPDATE
ON table
FOR EACH ROW
EXECUTE PROCEDURE trigger();
和身体触发()函数是:
BEGIN
NEW.ts := (
SELECT COALESCE(a::text,'') || ' ' ||
COALESCE(b::int,'') || ' ' ||
COALESCE(c::text,'') || ' ' ||
COALESCE(d::int, '') || ' ' ||
COALESCE(e::text,'')
FROM table
WHERE table.id = new.id);
RETURN NEW;
END
我希望这是清楚我想做的事情。
我的问题是触发器只触发更新,而不是插入。我猜这是行不通的,因为我有BEFORE INSERT或UPDATE,但是如果我将其更改为AFTER INSERT或UPDATE,那么它对INSERT和UPDATE都不起作用。
可能你需要[而不是插入触发器](http://msdn.microsoft.com/en-us/library/ms175521%28v=sql.105%29.aspx) – 2014-08-27 13:00:38
不,我想插入所有数据和concat所有列并将其保存在另一列中。 – thecoparyew 2014-08-27 13:09:23
不要使用'select'。直接使用'new'记录中的值。 – 2014-08-27 13:41:08