【PostgreSQL 12 新機能】パーティションテーブルを参照する外部キーの作成を検証してみた

こんにちは。サイオステクノロジー OSS サポート担当 Y です。

今回は PostgreSQL 12 (現時点ではまだ beta 版) で追加が予定されている機能であるパーティションテーブルを参照する外部キーの作成について検証してみました。(※以下の内容は CentOS 7.6/PostgreSQL 11.5/PostgreSQL 12beta3 にて検証しています。)

■はじめに

次の PostgreSQL のメジャーバージョンである PostgreSQL 12 では、複数の機能追加/強化が予定されています。今回は PostgreSQL 12beta3 を使って、パーティションテーブルを参照する外部キーの作成を検証してみました。

PostgreSQL 11 までは、パーティションテーブルを参照する外部キーを作成することができませんでしたが、PostgreSQL 12 からはその様な外部キーを作成することが可能になる予定となっています。

■検証 (PostgreSQL 11)

それでは、さっそく検証してみます。

まずは、PostgreSQL 11 での検証です。以下の様にパーティションテーブル “test” を作成します。

次に、このテーブル test を参照する外部キーを持つテーブル “ref_test” を作成してみます。

すると、上記の様にパーティションテーブルを参照することができない旨のエラーが出力されます。これが PostgreSQL 11 までの仕様になっています。

■検証 (PostgreSQL 12beta3)

今度は、PostgreSQL 12beta3 で同様の検証を実施してみます。

PostgreSQL 12beta3 で、先程と同じ様にパーティションテーブル “test” を作成します。

次に、このテーブル test を参照する外部キーを持つテーブル “ref_test” を作成してみます。

すると、上記の様にパーティションテーブルを参照する外部キーを持つテーブル “ref_test” を作成することができました。

最後に、実際に外部キーによる制約が動作するか否かを検証してみます。

以下の様に被参照テーブルである test に 1, 2, 3 を INSERT します。

この状態で ref_test に 1, 2, 3, 4 を INSERT すると、1, 2, 3 は正常に INSERT できますが、test.a に値が存在していない “4” を INSERT しようとすると、外部キー制約違反を示すエラーが出力され INSERT できませんでした。

上記の通り、パーティションテーブルを参照する外部キーの作成及び動作を確認することができました。

■最後に

今回は PostgreSQL 12beta3 で、パーティションテーブルを参照する外部キーの作成を検証してみました。

PostgreSQL 10 で導入された宣言的パーティショニングに関する機能も、バージョンを重ねるごとに少しずつ強化されており、少しずつ恩恵を受けることができる範囲が広がってきているようです。

今後も、機会があれば PostgreSQL 12 や既存のバージョンにおける機能の検証を実施してみようと思います。

>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメント投稿

メールアドレスは表示されません。


*