Bonjour,

Je voudrais savoir s'il est possible de partitionner une table par list ou par range en utilisant une fonction sur la clé du partionnement.

ex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
CREATE TABLE professional_history (
prof_history_id  NUMBER(10),
person_id        NUMBER(10) NOT NULL,
organization_id  NUMBER(10) NOT NULL,
record_date      DATE NOT NULL,
ph_comments      VARCHAR2(2000))
PARTITION BY RANGE (to_char(record_date, 'mm')) 
(
PARTITION mm1 
VALUES LESS THAN ('01')
TABLESPACE mm1,
PARTITION mm2 
VALUES LESS THAN ('02') 
TABLESPACE mm2,
...

ou

CREATE TABLE professional_history (
prof_history_id  NUMBER(10),
person_id        NUMBER(10) NOT NULL,
organization_id  NUMBER(10) NOT NULL,
record_date      DATE NOT NULL,
ph_comments      VARCHAR2(2000))
PARTITION BY LIST (to_char(record_date, 'mm'))
(
PARTITION mm1 VALUES ('01')
TABLESPACE mm1,
PARTITION mm2 VALUES ('02')
TABLESPACE mm2,
...
Je n'ai pas l'impression qu'on ait le droit d'utiliser la fonction to_char dans la définition de la partition

Est-il possible d'éviter la création d'une colonne dans la table ne comprenant que le mois afin de baser les partitions dessus ?

Merci de votre aide.