2016-11-20 60 views
0

我得到了上面的错误来自Play Evolutions而运行激活器运行在一个新的Scala Play-Slick项目。我使用Postgres服务器版本9.3和最新的JDBC驱动程序9.4。我1.sql文件看起来像这样:我们得到了以下错误:null,当试图运行这个SQL脚本

# schema 

# --- !Ups 

CREATE TABLE country (
    id BIGINT, 
    name VARCHAR(100), 
    iso2 CHAR(2), 
    modified TIMESTAMP DEFAULT now(), 
    PRIMARY KEY (id) 
); 

CREATE OR REPLACE FUNCTION update_modified() 
RETURNS TRIGGER AS $$ 
BEGIN 
    NEW.modified = now(); 
    RETURN NEW; 
END; 
$$ language 'plpgsql'; 

CREATE TRIGGER trigger_country_modified BEFORE UPDATE ON country FOR EACH ROW EXECUTE PROCEDURE update_modified(); 

# --- !Downs 

DROP TABLE country CASCADE; 

DROP FUNCTION update_modified_column; 

通过试验和错误我看到变阵并不十分了解本地的Postgres触发功能update_modified。我如何解决或规避这个问题?

回答

1

Play evolution插件将您的.sql文件分割成一系列以分号分隔的语句,然后逐个针对数据库执行它们。

作为您使用分号update_modified函数内()代码,则必须通过输入两次逃脱它;;。见下:

CREATE OR REPLACE FUNCTION update_modified() 
RETURNS TRIGGER AS $$ 
BEGIN 
    NEW.modified = now();; 
    RETURN NEW;; 
END;; 
$$ language 'plpgsql'; 
+0

完全正确!谢谢! –

相关问题