2017-05-18 26 views
0

在更新表格時可以使用兩個分區嗎?使用分區更新表格

例如,我嘗試做類似的事情,但給我錯誤。

update student PARTITION (ma_stu_class1, ma_stu_class2) 
set branch = 'R'||100; 

請讓我知道是否有任何方法可以做到這一點。

在此先感謝

+0

的可能的複製[更新分區表甲骨文(http://stackoverflow.com/questions/22847652/updating-分區表-Oracle)的 – XING

回答

0

不能更新這樣的多個分區,按照該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')); 
1

你不能在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同桌多個分區,並使用合併功能,您可以更新表