scala - 使用 JDBC 创建 PostgreSQL 触发器

标签 scala jdbc plpgsql postgresql-9.1 playframework-2.0

我正在尝试在 Play2.0 中创建一个 PostgreSQL 触发器数据库演化脚本。 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 驱动程序。

更新:

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();
    }

希望这对你有用。

关于scala - 使用 JDBC 创建 PostgreSQL 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10460542/

相关文章:

sql - 从表中选择一组动态列并获取每个列的总和

postgresql - 使用 PostgreSQL 触发器对数据进行动态审计

sql - 将逗号分隔的字符串拆分为列

scala - 如何在 Scala 的 map 中访问列表的元组?

java - 如何将列数未知的 ResultSet 映射到 List 并将其显示在 HTML 表格中?

java - 通过Java API获取NUMBER列的比例和精度?

java - "invalid database address"对于 JDBC 中的 PostgreSQL

scala - 用于生成图中所有拓扑排序的尾递归算法

class - 我可以在 Scala 类中定义无名方法吗?

android - 在Android Studio插件列表中找不到sbt