2017-05-18 24 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同桌多个分区,并使用合并功能,您可以更新表