Oracle:理解和复制 ALTER TABLE EXCHANGE PARTITION 中的 ORA-14130 UNIQUE 约束不匹配

Oracle: Understanding and replicating ORA-14130 UNIQUE constraints mismatch in ALTER TABLE EXCHANGE PARTITION

大家好! 我在我的共享开发环境中遇到这个错误(ORA-14130 UNIQUE constraints mismatch in ALTER TABLE EXCHANGE PARTITION),我无法修复它只是因为我不完全理解它。

让我们创建这三个 table:

对于 ALTER TABLE EXCHANGE PARTITION 因 ORA-14130 而失败的 table,我应该创建什么 index/constraint?

CREATE TABLE TMP_DEBUG_BORRAR_DATOS_1 AS
SELECT  level id, timestamp'2000-11-02 09:00:00' fecha
FROM    dual
CONNECT BY level <= 100000 ;

CREATE TABLE TMP_DEBUG_BORRAR_DATOS_2 AS
SELECT level id, timestamp'2001-09-10 13:00:00' fecha
FROM dual
CONNECT BY level <= 100000 ;

CREATE TABLE TMP_DEBUG_BORRAR_TEST
( 
    id, 
    fecha
)
PARTITION BY RANGE ( fecha )
(
    PARTITION year_2000 VALUES LESS THAN ( timestamp'2000-12-02 00:00:00' ),
    PARTITION year_2001 VALUES LESS THAN ( timestamp'2001-10-10 00:00:00' )
)
AS
SELECT  1, timestamp'2000-11-02 09:00:00'
FROM    dual
WHERE   1=0;

--What should I add here for the ALTER TABLE EXCHANGE PARTITION to throw an ORA-14130?
ALTER TABLE TMP_DEBUG_BORRAR_TEST EXCHANGE PARTITION year_2000 WITH table TMP_DEBUG_BORRAR_DATOS_1;

非常感谢!

您需要对分区 table 设置唯一约束才能得到错误。所以,在交换之前这样做:

alter table TMP_DEBUG_BORRAR_TEST add constraint ukk unique (id, fecha);

然后你需要像这样进行交换:

ALTER TABLE TMP_DEBUG_BORRAR_TEST EXCHANGE PARTITION year_2000 WITH table TMP_DEBUG_BORRAR_DATOS_1 including indexes;