我试图在Play2.0数据库进化脚本中创建PostgreSQL触发器。 SQL代码是比较容易和pgAdminIII运行良好:使用JDBC创建PostgreSQL触发器
CREATE OR REPLACE FUNCTION update_modified() RETURNS TRIGGER AS $$
BEGIN
NEW.modified = now();
RETURN NEW;
END;
$$ LANGUAGE 'plpgsql';
然而,在运行时的演变,我得到一个错误:ERROR: unterminated dollar-quoted string at or near "$$ BEGIN NEW.modified = now()"
。 SQL代码似乎在 处被截断,在函数中遇到第一个分号。我正在使用PostgreSQL的“9.1-901.jdbc4”JDBC驱动程序。
更新:
在Evolutions.scala的代码(线219+)执行对;
简单分裂。似乎在框架本身是错误的:
// Execute script
s.sql.split(";").map(_.trim).foreach {
case "" =>
case statement => execute(statement)
}
任何解决方案?
这个问题已经在这里讨论过了(http://archives.postgresql.org/pgsql-jdbc/2010-03/msg00056.php)。 – fynn
请向我们展示创建触发器的Java代码。 –
创建触发器的代码不是我自己的,因为sql脚本是[Play数据库进化脚本](http://www.playframework.org/documentation/2.0/Evolutions)。我猜(斯卡拉!)代码可以在这里找到[https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/api/db/evolutions /Evolutions.scala)。 – fynn