使用JDBC创建PostgreSQL触发(Create PostgreSQL trigger usi

2019-09-17 01:18发布

我想创建一个在PostgreSQL触发器Play2.0数据库进化脚本。 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)
}

任何解决方案?

Answer 1:

你可以试试下面的事情。

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

希望这会为你工作。



文章来源: Create PostgreSQL trigger using JDBC