我正在尝试创建一个 PostgreSQL 触发器Play2.0 http://www.playframework.org/数据库演化脚本。 sql代码相对简单并且在pgAdminIII中运行良好:
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 驱动程序。
Update:
代码在Evolutions.scala https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/api/db/evolutions/Evolutions.scala(第 219 行+)对;
。框架本身似乎有问题:
// Execute script
s.sql.split(";").map(_.trim).foreach {
case "" =>
case statement => execute(statement)
}
有什么解决办法吗?
您可以尝试以下操作。
String sql = "CREATE OR REPLACE FUNCTION update_modified() RETURNS TRIGGER AS $$ " +
"BEGIN " +
"NEW.modified = now(); " +
"RETURN NEW; " +
"END; " +
"$$ LANGUAGE 'plpgsql';";
DataSource ds = getDataSource();
try {
Connection conn = ds.getConnection();
conn.setAutoCommit(true);
Statement st = conn.createStatement();
st.executeUpdate(sql);
st.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
希望这对你有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)