2016-10-07 41 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

谢谢你的工作! –