我認爲update語句需要數據已經存在。sql更新語句 - 如果記錄不存在,插入數據?
我支持一個Java應用程序。以前的某些代碼的開發人員使用delete語句清除記錄,然後使用update語句將數據重新插入表中。
是否可以使用更新語句將數據插入或更新到表中?
db是oracle express。這不應該有所作爲。
我認爲update語句需要數據已經存在。sql更新語句 - 如果記錄不存在,插入數據?
我支持一個Java應用程序。以前的某些代碼的開發人員使用delete語句清除記錄,然後使用update語句將數據重新插入表中。
是否可以使用更新語句將數據插入或更新到表中?
db是oracle express。這不應該有所作爲。
您可以嘗試使用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>;
也許你可以提供關於你問題的更多細節。我假設這是你所要求的。
查詢是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();
簡單的UPDATE不能插入任何新行。但也許還有更多。你能顯示聲明和周圍的代碼嗎? – Thilo