Oracle: Понимание и репликация уникальных ограничений ORA-14130 в ALTER TABLE EXCHANGE PARTITION - PullRequest
0 голосов
/ 26 февраля 2020

все! Я сталкиваюсь с этой ошибкой (несоответствие уникальных ограничений ORA-14130 в ALTER TABLE EXCHANGE PARTITION) в моей общей среде разработки, и я не могу ее исправить только потому, что не до конца ее понимаю.

Давайте создадим эти три таблицы:

Какой индекс / ограничение я должен создать, для какой таблицы для ALTER TABLE EXCHANGE PARTITION не удается с ORA-14130?

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;

Спасибо большое!

1 Ответ

1 голос
/ 26 февраля 2020

вам нужно иметь уникальное ограничение на таблицу разделов, чтобы получить ошибку. Итак, сделайте это до обмена:

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;
...