【发布时间】:2022-05-11 20:36:50
【问题描述】:
我想更新一个分区键。分区如下
PARTITION_NAME LAST_ANALYZED NUM_ROWS BLOCKS SAMPLE_SIZE HIGH_VALUE
PORTAL_SERVICE_1 12/8/2016 4133 174 4133 1
PORTAL_SERVICE_2 6/8/2016 4474 174 4474 2
PORTAL_SERVICE_3 10/8/2016 29602 2014 29602 3
PORTAL_SERVICE_OTHERS 24/5/2016 0 110 DEFAULT
此分区应用于 Portal_Service_id 列。我想将门户服务 ID 的值从 2 更新为 1。
当我尝试时
update trans set PORTAL_SERVICE_ID = 1 where ID = 2054;
我得到错误: 错误报告 - SQL 错误:ORA-14402:更新分区键列会导致分区更改 14402. 00000 - “更新分区键列会导致分区更改”
我不允许使用启用行移动。
任何人都可以建议任何替代方法来更新该行。
如果可以在场景中使用,任何人都可以提供一些启示:
UPDATE <table_name> PARTITION (<partition_name>)
SET <column_name> = <value>
WHERE <column_name> <condition> <value>;
【问题讨论】:
-
为什么你在一个 Oracle 问题上有
mysql标签。 -
由于您不允许行移动,您需要删除旧行并插入新行而不是更新。
-
我使用常规删除吗?我问的原因是我不能直接在 prod db 中检查这个,并且 test db 没有 hv 分区...... proj 设置很烂!!!
-
是的,定期删除。您需要先将旧行内容保存在应用程序中,以便之后插入。
-
@Barmar 似乎删除也不是一个选项。我需要以某种方式更新.. :(
标签: oracle sql-update partitioning database-partitioning