2016-12-17 37 views
-3

我做了一个表登录使用oracle。首先,我在java程序中使用了字段,用户名,密码和连接数据库来注册。我试图执行插入查询之前,它运行正常比我更改表登录和删除列ID。然后再次尝试从java程序运行插入查询,但现在我得到了以下错误。我没有得到改变后发生的事情。我认为改变应该反映到处,但我坚持这个例外。SQLSyntaxErrorException

java.sql.SQLSyntaxErrorException:ORA-04098:触发器 'SURABHI.BI_LOGIN' 是无效的,失败再验证

Java代码:

public void insertLogin(String user,String pass) { 

    String query = "insert into Login(username,password)" + " values(?,?)"; 
    try { 
     ps = con.prepareStatement(query); 
     ps.setString(1, user); 
     ps.setString(2, pass); 
     ps.execute(); 
     System.out.println("inserted"); 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

您应该附加表格架构和触发器正文。 –

回答

2

看来你的表有一个插入触发器之前,它是无效的,可能是因为你删除了列ID,它被触发器使用。

检查你的触发器并成功编译它。

+0

触发“BI_LOGIN” 上“登录” 插入每个行之前开始 如果 :NEW“ID”为空,然后 选择“LOGIN_SEQ” .nextval成:NEW“ID”从双; end if; 结束; –

+0

现在我该怎么办? –

+0

完成。我删除了触发器。现在代码执行正确。感谢提示,我没有从异常中获得。 –