可以在TEMPORARY表上發出異步提交嗎?它是否會讓我的交易不再持久?此PL/SQL代碼是否兼容ACID?
CREATE GLOBAL TEMPORARY TABLE my_table_tmp (id number) ON COMMIT PRESERVE ROWS;
CREATE TABLE my_table (id number);
BEGIN
INSERT --+ append
INTO my_table_tmp (id)
SELECT rownum
FROM all_objects;
COMMIT WRITE BATCH NOWAIT; -- continue working without waiting on LGWR
INSERT INTO my_table (id)
SELECT id
FROM my_table_tmp;
COMMIT; -- actually preserve transaction
END;
/
編輯:
是的,我明白,這不是嚴格ACID,因爲它繞過一秒鐘的d部分。問題是 - 它是否與ACID一樣好,因爲沒有可能的情況與僅使用實際COMMIT的版本不同。或者我錯了,可以有區別?
你知道,你可以只用一個語句做到這一點? –
我知道。這只是我打算做的最簡單的例子。 – jva