我試圖在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