0

我认为更新语句要求数据已经存在。

我正在支持一个 java 应用程序。以前的一些代码开发人员使用删除语句清除记录,然后使用更新语句将数据插入表中。

update语句可以用来向表中插入或更新数据吗???

数据库是 oracle express。这不应该有所作为。

4

2 回答 2

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>;

也许您可以提供有关您的问题的更多详细信息。我假设这是你所需要的。

于 2012-12-26T04:41:11.033 回答
0

Query 是 org.hibernate.Query 的一个实例。查看休眠文档进行查询。更新应该引发异常,但事实并非如此。代码没有刷新缓冲区的事实可能是更新没有引发异常的原因吗???

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();
于 2012-12-26T07:35:52.820 回答