我想創建觸發器,每次更改任何列時觸發 - 無論是新更新還是新插入。我創造了這樣的事情:觸發每次更新或插入
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