我认为update语句要求数据已经存在。
我正在支持一个java应用程序。某些代码的前一个开发人员使用delete语句清除记录,然后使用update语句将数据插回到表中。
可以使用update语句将数据插入或更新到表中吗?
db是oracle express。这不应该有所作为。
答案 0 :(得分:1)
您可以尝试使用MERGE
语句获得相同的结果。
使用MERGE
语句,您可以将新记录插入表中,也可以在数据已存在时进行更新。
请找到MERGE
声明的语法。
MERGE INTO <table_name>
USING <table_view_or_query>
ON (<condition>)
WHEN MATCHED THEN <update_clause>
DELETE <where_clause>
WHEN NOT MATCHED THEN <insert_clause>;
也许您可以提供有关您问题的更多详细信息。我假设这是你所要求的。
答案 1 :(得分:0)
Query是org.hibernate.Query的一个实例。查看hibernate文档以进行查询。它应该抛出一个异常,但事实并非如此。可能是代码没有刷新缓冲区的事实是更新没有抛出异常的原因???
String deleteQueryString = String.format("delete FROM %s WHERE personId = %s and deptId = %s and active = true", table, person.getId(),dept.getId());
Query deleteQuery = Persistence.reportContext().session().createQuery(deleteQueryString);
int deletedCount = deleteQuery.executeUpdate();
log.debug(String.format("%20s (%4s): %s", "delete query", deletedCount, deleteQueryString));
String updateQueryString = String.format("update %s set activeSet = true WHERE personId = %s and deptId = %s and activeSet = false", table, person.getId(), dept.getId());
Query updateQuery = Persistence.reportContext().session().createQuery(updateQueryString);
int updatedCount = updateQuery.executeUpdate();