我一直在玩最後一個小時或更多試圖將更新語句放入觸發器。我明白UPDATE語句的概念,下面的工作只是正常Postgres - 更新語句作爲觸發器
UPDATE cars SET country = 'France';
我要的是投入到一個觸發該這樣,當汽車表被更新,列全國將自動與法國進行更新。
我已經嘗試過調整我在interweb上發現的函數和觸發器,但我顯然聲明錯誤,因爲它們不執行或者它們執行但不更新國家/地區字段當添加新記錄時。
CREATE FUNCTION update_country() RETURNS TRIGGER AS $$
BEGIN
IF (TG_OP = 'UPDATE') THEN
UPDATE cars SET country = 'France' WHERE id = New.id;
END IF;
RETURN NULL;
END;
$$ LANGUAGE plpgsql; --The trigger used to update a table.
CREATE TRIGGER update_country_col BEFORE UPDATE ON cars FOR EACH ROW EXECUTE PROCEDURE update_country();
上述腳本執行但未將法國添加到國家/地區列。 該功能是根據我在網絡上發現的聲明進行調整的。
Postgres 9.1。
我知道答案會非常簡單!
請出示你的PostgreSQL的版本,你寫的觸發器的代碼,相關的'CREATE語句TRIGGER',聲明帽子你」重新使用來測試它和任何錯誤信息**的確切文本。現在這與「什麼顏色是我的帽子」問題並不遙遠。什麼帽子?我看不到任何帽子! – 2013-03-11 14:43:43
Postgres 9.1。 CREATE FUNCTION update_country() 返回一個觸發器AS $$ BEGIN IF(TG_OP = '更新')THEN UPDATE汽車中設置的國家= '法國' WHERE ID = New.id; END IF; RETURN NULL; END; $$語言plpgsql; - 用於更新表的觸發器。 CREATE TRIGGER update_country_col在更新汽車之前 FOR EACH ROW EXECUTE PROCEDURE update_country(); 上述腳本執行但不會將法國添加到國家/地區列。該功能是根據我在網上發現的一個聲明改編的。 – geomiles 2013-03-11 15:21:33