在更新表格時可以使用兩個分區嗎?使用分區更新表格
例如,我嘗試做類似的事情,但給我錯誤。
update student PARTITION (ma_stu_class1, ma_stu_class2)
set branch = 'R'||100;
請讓我知道是否有任何方法可以做到這一點。
在此先感謝
在更新表格時可以使用兩個分區嗎?使用分區更新表格
例如,我嘗試做類似的事情,但給我錯誤。
update student PARTITION (ma_stu_class1, ma_stu_class2)
set branch = 'R'||100;
請讓我知道是否有任何方法可以做到這一點。
在此先感謝
不能更新這樣的多個分區,按照該documentation - 如果你能,就不會有一個箭頭出來的partition
的右手邊的PARTITION (partition)
部分內該圖將通過,
將您帶回到partition
的左側 - 類似於update_set_clause圖的上半部分。
相反,您必須在where子句中使用分區鍵,例如如果你的密鑰開啓,比如col1和col2,你應該這樣做:
update student
set branch = 'R'||100
where (col1, col2) in (('class1', 'a'), ('class2', 'b'));
你不能在select和update中使用多個分區。相反,您可以使用下面的查詢。
MERGE INTO student S
USING (SELECT * FROM student PARTITION(ma_stu_class1)
UNION ALL
SELECT * FROM student PARTITION(ma_stu_class2)) S1
ON (S.CONNON_COLUMN = S1.COMMON_COLUMN)
WHEN MATCHED THEN
UPDATE
SET
branch = 'R'||100;
UNION ALL同桌多個分區,並使用合併功能,您可以更新表
的可能的複製[更新分區表甲骨文(http://stackoverflow.com/questions/22847652/updating-分區表-Oracle)的 – XING