通过JDBC创建触发器(oracle)

cor*_*ras 6 java oracle jdbc

有谁知道如何通过JDBC创建触发器.似乎问题与分号有关.任何反馈都非常赞赏.

以下SQL在数据库上运行时有效,但在使用以下Java代码运行时则无效:

Connection c=null;
    Statement s=null;
    try {
        c=dataSource.getConnection();
        s=c.createStatement();
        s.executeUpdate("create or replace trigger startuptrigger after insert on startuptest for each row begin insert into startuptest values(99); end");
        s.close();
        s=null;
        c.close();
        c=null;
    } catch(SQLException e) {
        if(s!=null) { try { s.close(); } catch(Exception f){} }
        if(c!=null) { try { c.close(); } catch(Exception f){} }
        throw new IOException(e.toString());
    }
Run Code Online (Sandbox Code Playgroud)

我尝试过s.execute(...)和s.executeUpdate(...)并没有什么区别.我正在使用ojdbc5.jar驱动程序.Oracle返回错误:

ORA-04098: trigger 'POLICYUAT.STARTUPTRIGGER' is invalid and failed re-validation
Run Code Online (Sandbox Code Playgroud)

tec*_*zen 0

我尝试了上面的代码,它在创建触发器方面工作正常。所以上述不起作用的原因可能是:

  1. 您连接的帐户没有创建触发器的权限:尝试直接连接并检查您是否有权限。
  2. 在sqlplus中手动执行上述触发器并检查您的表是否存在以及您是否有权插入该表。