2016-10-07 83 views
1

這是我使用postgres的第一週,我嘗試在行上執行更新時更新列狀態,但仍然收到語法錯誤。我花了幾個小時嘗試不同的東西,沒有運氣。任何幫助深表感謝。POSTGRESQL函數更新表中的字段

create table cyclecounts(
id integer 
first_name char(50) 
last_name char(50) 
status char(20)); 

功能

CREATE FUNCTION status() 
RETURNS trigger as $update_status$ 
BEGIN 
--check status of status field 
if new.status = 'unprocessed' then 
new.status = 'sent'; 
RETURN NEW; 
END; 
$update_status$ 
LANGUAGE plpgsql; 

錯誤:在或接近語法錯誤 「;」 第8行END;

觸發

CREATE TRIGGER status BEFORE UPDATE ON status 
FOR EACH ROW EXECUTE PROCEDURE status(); 

回答

1

你缺少end if(至少):

CREATE FUNCTION status() 
RETURNS trigger as $update_status$ 
BEGIN 
--check status of status field 
    if new.status = 'unprocessed' then 
     new.status = 'sent'; 
    end if; 
    RETURN NEW; 
END; 
$update_status$ 
LANGUAGE plpgsql; 
+0

謝謝你的工作! –