Ora 14402 updating partition key column

create table orders 2 ( 3 order_id number not null constraint pk$orders primary key using index, 4 order_date date not null 5 ) 6 partition by range (order_date) interval (numtoyminterval(1,'month')) 7 ( 8 partition p2014_01 values less than (to_date('01-feb-2014','DD-MON-YYYY')) 9 ) 10 ; Table created.

[email protected] create table line_items 2 ( 3 order_id number not null, 4 pos number not null, 5 item_id number not null, 6 quantity number not null, 7 constraint pk$line_items primary key (order_id, pos) using index, 8 constraint fk$order_id foreign key (order_id) references orders (order_id) 9 ) 10 partition by reference (fk$order_id); Table created.

If you don’t mention the datatype, Oracle will decide it based on the result of the expression.

A deterministic function, when passed certain inputs, will always return the exact same output.

“DETERMINISTIC” keyword is needed in order to mark a function as a candidate to be used in a function based index.

[email protected] select partition_name,high_value,interval from user_tab_partitions 2 where table_name='LINE_ITEMS' 3 ; PARTITION_ HIGH_VALUE INT ---------- ---------- --- P2014_01 NO SYS_P4268 YES SYS_P4269 YES SYS_P4270 YES SYS_P4271 YES Feststellung 1: es werden nur die Partitionen angelegt, die wirklich benötigt werden (das ist eine Eigenschaft der Interval-Partitionierung, aber es gilt auch für die Child-Tabelle) Feststellung 2: die Benennung der Partitionen stimmt bei der Master- und der Child-Tabelle überein. Zur zweiten Frage: was passiert, wenn, wir einen Datensatz so ändern, dass er in eine andere Partition verschoben werden muss?

Am besten mit „UPDATE INDEXES“ arbeiten, damit die Indizes nicht UNUSABLE werden.

Leave a Reply