inserting into partioned tables -
02-24-2004
, 10:03 AM
Below is some DDL SQL taken from the Oracle documentation creating a range
partioned table, partioned on TIME_ID.
I tried the following DML which worked
INSERT INTO RANGE_SALES (PROD_ID, CUST_ID, CHANNEL_ID) VALUES (1001, 1234,
'A')
you will note that I specified no value for the TIME_ID column. The DML
statement above worked! I thought that it should not because I did not a
value for the partition key, TIME_ID.
My questions are:
1) Why did the statement work despite the fact that I did not specify a
value for the partition key?
2) Into which partition would Oracle insert the record? Would it put it
into the SALES_Q1_1998 partition (the lowest value partition)?
Thanks
J.
DDL below
CREATE TABLE RANGE_SALES
( PROD_ID NUMBER(6)
, CUST_ID NUMBER
, TIME_ID DATE
, CHANNEL_ID CHAR(1)
, PROMO_ID NUMBER(6)
, QUANTITY_SOLD NUMBER(3)
, AMOUNT_SOLD NUMBER(10,2)
)
PARTITION BY RANGE (TIME_ID)
(PARTITION SALES_Q1_1998 VALUES LESS THAN
(TO_DATE('01-APR-1998','DD-MON-YYYY')),
PARTITION SALES_Q2_1998 VALUES LESS THAN
(TO_DATE('01-JUL-1998','DD-MON-YYYY')),
PARTITION SALES_Q3_1998 VALUES LESS THAN
(TO_DATE('01-OCT-1998','DD-MON-YYYY')),
PARTITION SALES_Q4_1998 VALUES LESS THAN
(TO_DATE('01-JAN-1999','DD-MON-YYYY')),
PARTITION SALES_Q1_1999 VALUES LESS THAN
(TO_DATE('01-APR-1999','DD-MON-YYYY')),
PARTITION SALES_Q2_1999 VALUES LESS THAN
(TO_DATE('01-JUL-1999','DD-MON-YYYY')),
PARTITION SALES_Q3_1999 VALUES LESS THAN
(TO_DATE('01-OCT-1999','DD-MON-YYYY')),
PARTITION SALES_Q4_1999 VALUES LESS THAN
(TO_DATE('01-JAN-2000','DD-MON-YYYY')),
PARTITION SALES_Q1_2000 VALUES LESS THAN
(TO_DATE('01-APR-2000','DD-MON-YYYY')),
PARTITION SALES_Q2_2000 VALUES LESS THAN
(TO_DATE('01-JUL-2000','DD-MON-YYYY')),
PARTITION SALES_Q3_2000 VALUES LESS THAN
(TO_DATE('01-OCT-2000','DD-MON-YYYY')),
PARTITION SALES_Q4_2000 VALUES LESS THAN (MAXVALUE)) |