Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 使用JDBC创建PostgreSQL触发器_Scala_Jdbc_Plpgsql_Postgresql 9.1_Playframework 2.0 - Fatal编程技术网

Scala 使用JDBC创建PostgreSQL触发器

Scala 使用JDBC创建PostgreSQL触发器,scala,jdbc,plpgsql,postgresql-9.1,playframework-2.0,Scala,Jdbc,Plpgsql,Postgresql 9.1,Playframework 2.0,我正在尝试在数据库演化脚本中创建PostgreSQL触发器。sql代码相对简单,在pgAdminIII中运行良好: CREATE OR REPLACE FUNCTION update_modified() RETURNS TRIGGER AS $$ BEGIN NEW.modified = now(); RETURN NEW; END; $$ LANGUAGE 'plpgsql'; 但是,我在运行evolution时遇到一个错误:error:unterminated 位

我正在尝试在数据库演化脚本中创建PostgreSQL触发器。sql代码相对简单,在pgAdminIII中运行良好:

CREATE OR REPLACE FUNCTION update_modified() RETURNS TRIGGER AS $$
  BEGIN
    NEW.modified = now();
    RETURN NEW;
  END;
$$ LANGUAGE 'plpgsql';
但是,我在运行evolution时遇到一个错误:
error:unterminated
位于“$$BEGIN NEW.modified=now()”或其附近的字符串。
。SQL代码似乎被截断了 函数中遇到的第一个分号。我正在使用PostgreSQL的“9.1-901.jdbc4”JDBC驱动程序

更新:

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

希望这对您有用。

问题也已讨论过。请向我们展示创建触发器的Java代码。创建触发器的代码不是我自己的,因为sql脚本是一个脚本。我想可以找到(Scala!)代码。最有可能的是,该框架将您的语句拆分为
。您需要告诉它以单个语句而不是脚本的形式运行该字符串。由于我不知道Play框架,我无法告诉您必须如何配置它。代码的正确位置在哪里?在评估演进之前,需要先执行它。
Gloabal
onStart
方法似乎是错误的。。。