Tout le monde peut me dire comment nous pouvons insérer des données dans une table partitionnée qui ne remplit pas les conditions de partitionnement.Comment insérer des données dans une table de partition qui n'est pas définie dans la partition?
Répondre
vous obtiendrez une erreur ORA-14400:
SQL> CREATE TABLE t (ID NUMBER)
2 PARTITION BY RANGE (ID)
3 ( PARTITION t1 VALUES LESS THAN (100),
4 PARTITION t2 VALUES LESS THAN (200)
5 );
Table created
SQL> insert into t values (1);
1 row inserted
SQL> insert into t values (201);
insert into t values (201)
~
ORA-14400: inserted partition key does not map to any partition
Pour éviter cela, vous pouvez utiliser une partition par défaut avec LESS THAN (MAXVALUE)
:
SQL> CREATE TABLE t (ID NUMBER)
2 PARTITION BY RANGE (ID)
3 ( PARTITION t1 VALUES LESS THAN (100),
4 PARTITION t2 VALUES LESS THAN (200),
5 PARTITION tmax VALUES LESS THAN (MAXVALUE)
6 );
Table created
Merci .. Grande Explication –
Si vous faites référence aux tables gamme partitionnées et utilisent 11g, regardez dans la définition des tables avec le partitionnement d'intervalle. Ceci est similaire au partitionnement des plages, sauf qu'Oracle créera de nouvelles partitions ou divisera automatiquement les partitions existantes pour vous. Si vous êtes sur une version antérieure, la suggestion de Vincent de créer une partition MAXVALUE est la réponse pour le partitionnement de gamme.
par définition, cela semblerait impossible! –
Vous pourriez le faire avec la partition d'échange sans validation. Cependant, l'algorithme d'élimination de partition ne pourra pas trouver les données plus tard. Pouvez-vous être plus précis sur votre situation? – Pop