如何在 oracle 19c 的 MERGE 语句中使用 commit?
How to use commit in MERGE statement in oracle 19c?
是否可以在oracle 19c中使用MERGE语法中的commit语句?我想在每 1000 次更新和每 1000 次插入之后执行一次提交,如何实现?
MERGE INTO target_table
USING source_table
ON search_condition
WHEN MATCHED THEN
UPDATE SET col1 = value1, col2 = value2,...
WHERE <update_condition>
[DELETE WHERE <delete_condition>]
WHEN NOT MATCHED THEN
INSERT (col1,col2,...)
values(value1,value2,...)
WHERE <insert_condition>;
如果上述不可能,那么您通常如何找到 1000 行是否 inserted/updated 并相应地执行提交?
你不能,不能在 MERGE
内。当一切都完成时提交一次。
此外,您为什么要频繁提交?您期望得到什么好处?
如果必须如您所述,使用循环并在 1000 行的 块 中执行,然后提交。当您在循环中频繁提交时,请注意 可能(或可能不会)发生的 ORA-01555。
是否可以在oracle 19c中使用MERGE语法中的commit语句?我想在每 1000 次更新和每 1000 次插入之后执行一次提交,如何实现?
MERGE INTO target_table
USING source_table
ON search_condition
WHEN MATCHED THEN
UPDATE SET col1 = value1, col2 = value2,...
WHERE <update_condition>
[DELETE WHERE <delete_condition>]
WHEN NOT MATCHED THEN
INSERT (col1,col2,...)
values(value1,value2,...)
WHERE <insert_condition>;
如果上述不可能,那么您通常如何找到 1000 行是否 inserted/updated 并相应地执行提交?
你不能,不能在 MERGE
内。当一切都完成时提交一次。
此外,您为什么要频繁提交?您期望得到什么好处?
如果必须如您所述,使用循环并在 1000 行的 块 中执行,然后提交。当您在循环中频繁提交时,请注意 可能(或可能不会)发生的 ORA-01555。