我试图从Java程序刷新Postgresql中的物化视图:
conn = AbstractClientDao.getJdbcConnection();
pst = conn.prepareStatement("REFRESH MATERIALIZED VIEW mv_my_materialized_view;");
pst.execute();
conn.close();
根据文档,execute()方法可用于任何类型的SQL语句:
在此PreparedStatement对象中执行SQL语句,该对象可以是任何类型的SQL语句。
注意:我不需要在程序的这一部分中了解结果,因此返回值并不重要。
此代码在数据库中未执行任何操作,实例化视图未更新,但在Java程序中未引发任何错误/异常。
在四处查看之后,我使用了相同的代码,但是使用了executeUpdate():
conn = AbstractClientDao.getJdbcConnection();
pst = conn.prepareStatement("REFRESH MATERIALIZED VIEW mv_my_materialized_view;");
pst.executeUpdate();
conn.close();
从文档中,executeUpdate()也可用于任何类型的SQL:
在此PreparedStatement对象中执行SQL语句,该对象必须是SQL数据操作语言(DML)语句,例如INSERT,UPDATE或DELETE;或不返回任何内容的SQL语句,例如DDL语句。
该代码正在运行,并且可以正确更新视图。
我是否丢失了某些东西,或者文档是否不太清楚executed()和executeUpdate()之间的区别?
注意:Java8,Postgresql 9.6,驱动程序org.postgresql,版本9.3-1101-jdbc41
最佳答案
答:此代码的两个版本之间没有区别。我的问题是由于数据库中的比赛条件。
关于java - Java execute()与executeUpdate()刷新Postgresql中的实例化 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60657384/