では、パーティションテーブル内の任意の列をプライマリキーまたは外部キーとして指定できます。
前提条件
クラスターのリビジョンバージョンはV1.1.35以降です。
使用上の注意
指定した主キーにすべてのパーティションキーが含まれている場合、主キーのインデックスとしてローカルインデックスが使用されます。 それ以外の場合、グローバルインデックスが主キーのインデックスとして使用されます。
指定した外部キーにすべてのパーティションキーが含まれている場合、一意の制約のインデックスとしてローカルインデックスが使用されます。 そうでない場合、グローバルインデックスが一意の制約のインデックスとして使用されます。
ALTER TABLE xxx ADD PRIMARY KEY USING index xxxステートメントでは、グローバルインデックスのみを使用できます。 ローカルインデックスは制約を満たさない可能性があるため、ステートメントでローカルインデックスを使用することはできません。 代わりに、一意のキーがステートメントに追加されます。外部キーを参照するテーブルのパーティション間でデータを更新すると、エラーが発生することがあります。 パーティション間でデータを更新すると、削除操作と挿入操作が実行されます。 削除操作中に、システムは行が参照されているかどうかをチェックします。
例
パーティションテーブルの主キーの指定
CREATE TABLEセール
(
dept_no番号の主キー,
part_no varchar2,
country varchar2(20),
date date,
数量番号ユニーク
)
範囲によるパーティー (日付)
SUBPARTITION BY LIST(country)
(
PARTITION q1_2012
VALUES LESS THAN('2012-Apr-01')
(
SUBPARTITION q1_europe VALUES ('FRANCE', 'ITALY'),
SUBPARTITION q1_asia VALUES ('INDIA', 'PAKISTAN'),
SUBPARTITION q1_americas VALUES ('US', 'CANADA')
),
PARTITION q2_2012
VALUES LESS THAN('2012-Jul-01')
(
SUBPARTITION q2_europe VALUES ('FRANCE', 'ITALY'),
SUBPARTITION q2_asia VALUES ('INDIA', 'PAKISTAN'),
SUBPARTITION q2_americas VALUES ('US', 'CANADA')
),
PARTITION q3_2012
VALUES LESS THAN('2012-Oct-01')
(
SUBPARTITION q3_europe VALUES ('FRANCE', 'ITALY'),
SUBPARTITION q3_asia VALUES ('INDIA', 'PAKISTAN'),
SUBPARTITION q3_americas VALUES ('US', 'CANADA')
),
PARTITION q4_2012
VALUES LESS THAN('2013-Jan-01')
(
SUBPARTITION q4_europe VALUES ('FRANCE', 'ITALY'),
SUBPARTITION q4_asia VALUES ('INDIA', 'PAKISTAN'),
SUBPARTITION q4_americas VALUES ('US', 'CANADA')
)
);
セール
データテーブル "public.sales"
フィールド | タイプ | 照合 | Nullable | デフォルト
--------- ----------------------- ----------------------------------------
dept_no | 数値 | | nullではない |
part_no | 文字変化 | | | |
国 | キャラクターの変化 (20) | | |
date | date | | |
量 | 数値 | | |
パーティションキー値: RANGE (日付) NULLS LAST
インデックス:
「sales_pkey」基本キー、btree (dept_no) グローバル
パーティション数: 4 (\dコマンドを使用してパーティションを一覧表示できます) 外部キーによるパーティション分割テーブルの一意の制約の参照
テーブルの出荷を作成する
(order_id NUMBER NOT NULL)
、order_date日付NOT NULL
、delivery_date日付NOT NULL
、customer_id NUMBER NOT NULL
、sales_amount NUMBER NOT NULL REFERENCES sales(amount)
, PRIMARY KEY (order_date, order_id, delivery_date)
)
範囲によるパーティー (order_date)
(
PARTITION p_2006_aug未満の値 (TO_DATE('01-SEP-2006 '、'dd-MON-yyyy'))
、PARTITION p_2006_sep値より少ない値 (TO_DATE('01-OCT-2006 '、'dd-MON-yyyy'))
、PARTITION p_2006_oct値より少ない値 (TO_DATE('01-NOV-2006 '、'dd-MON-yyyy'))
、PARTITION p_2006_nov値より少ない値 (TO_DATE('01-DEC-2006 '、'dd-MON-yyyy'))
、PARTITION p_2006_decよりも少ない値 (TO_DATE('01-JAN-2007 '、'dd-MON-yyyy'))
);
出荷
データテーブル "public.shipments"
フィールド | タイプ | 照合 | Nullable | デフォルト
-------------- --------------------------------------------------------
order_id | 数値 | | nullではない |
order_date | date | | nullではない |
delivery_date | date | | nullではない |
customer_id | 数値 | | nullではない |
sales_amount | 数値 | | nullではない |
パーティションキー値: RANGE (order_date) NULLS LAST
インデックス:
"shipments_pkey" PRIMARY KEY, btree (order_date, order_id, delivery_date)
外部キー制約:
「shipments_sales_amount_fkey」外国キー (sales_amount) REFERENCES sales(amount)
"shipments_sales_amount_fkey1" FOREIGN KEY (sales_amount) REFERENCES sales_q1_2012(amount)
"shipments_sales_amount_fkey10" 外国キー (sales_amount) 参照sales_q3_americas(amount)
"shipments_sales_amount_fkey11" 外国キー (sales_amount) REFERENCES sales_q3_europe(amount)
"shipments_sales_amount_fkey12" 外国キー (sales_amount) REFERENCES sales_q3_asia(amount)
"shipments_sales_amount_fkey13" 外国キー (sales_amount) REFERENCES sales_q4_2012(amount)
"shipments_sales_amount_fkey14" FOREIGN KEY (sales_amount) REFERENCES sales_q4_americas(amount)
"shipments_sales_amount_fkey15" 外国キー (sales_amount) REFERENCES sales_q4_europe(amount)
"shipments_sales_amount_fkey16" 外国キー (sales_amount) REFERENCES sales_q4_asia(amount)
"shipments_sales_amount_fkey2" 外国キー (sales_amount) REFERENCES sales_q1_americas(amount)
"shipments_sales_amount_fkey3" 外国キー (sales_amount) REFERENCES sales_q1_europe(amount)
"shipments_sales_amount_fkey4" 外国キー (sales_amount) REFERENCES sales_q1_asia(amount)
"shipments_sales_amount_fkey5" FOREIGN KEY (sales_amount) REFERENCES sales_q2_2012(amount)
"shipments_sales_amount_fkey6" FOREIGN KEY (sales_amount) REFERENCES sales_q2_americas(amount)
"shipments_sales_amount_fkey7" 外国キー (sales_amount) REFERENCES sales_q2_europe(amount)
"shipments_sales_amount_fkey8" 外国キー (sales_amount) REFERENCES sales_q2_asia(amount)
"shipments_sales_amount_fkey9" 外国キー (sales_amount) REFERENCES sales_q3_2012(amount)
パーティション数: 5 (\dコマンドを使用してパーティションを一覧表示できます)