J'essaie d'insérer des informations dans une table de partition, mais je ne sais pas ce que je fais mal! Montrez-moi cette erreur: ORA-14400: inserted partition key does not map to any partition
"
La table dba_tab_partitions
affiche ces informations ci-dessous:
1 PDIA_98_20091023 0
2 PDIA_98_20091022 0
3 PDIA_98_20091021 0
4 PDIA_98_20091020 0
5 PDIA_98_20091019 0
S'il vous plaît, aidez-moi rs
select partition_name,column_name,high_value,partition_position
from ALL_TAB_PARTITIONS a , ALL_PART_KEY_COLUMNS b
where table_name='YOUR_TABLE' and a.table_name = b.name;
Cette requête répertorie le nom de colonne utilisé comme clé et les valeurs autorisées. assurez-vous d'insérer les valeurs autorisées (high_value
). Sinon, si la partition par défaut est définie, elle y irait.
MODIFIER:
Je présume que votre TABLE DDL serait comme ça.
CREATE TABLE HE0_DT_INF_INTERFAZ_MES
(
COD_PAIS NUMBER,
FEC_DATA NUMBER,
INTERFAZ VARCHAR2(100)
)
partition BY RANGE(COD_PAIS, FEC_DATA)
(
PARTITION PDIA_98_20091023 VALUES LESS THAN (98,20091024)
);
Ce qui signifie que j'avais créé une partition avec plusieurs colonnes qui contient une valeur inférieure à la plage composite (98,20091024);
C'est d'abord COD_PAIS <= 98
et aussi FEC_DATA < 20091024
Combinaisons et résultat:
98, 20091024 FAIL
98, 20091023 PASS
99, ******** FAIL
97, ******** PASS
< 98, ******** PASS
Donc, le INSERT
ci-dessous échoue avec ORA-14400; car (98,20091024)
dans INSERT
est [~ # ~] égal à [~ # ~] à celui dans DDL
mais [~ # ~] pas [~ # ~] moins que ça.
SQL> INSERT INTO HE0_DT_INF_INTERFAZ_MES(COD_PAIS, FEC_DATA, INTERFAZ)
VALUES(98, 20091024, 'CTA'); 2
INSERT INTO HE0_DT_INF_INTERFAZ_MES(COD_PAIS, FEC_DATA, INTERFAZ)
*
ERROR at line 1:
ORA-14400: inserted partition key does not map to any partition
Mais, nous essayons (97, 20091024), cela passe par
SQL> INSERT INTO HE0_DT_INF_INTERFAZ_MES(COD_PAIS, FEC_DATA, INTERFAZ)
2 VALUES(97, 20091024, 'CTA');
1 row created.