質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

1回答

1476閲覧

(PostgreSQL)パーティション分割したテーブルの親テーブルへ主キーを張る方法について

numa1000

総合スコア1

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2022/03/19 10:35

PostgreSQLのパーティションと主キーの関係について、わかる方がいればお伺いしたいです。

PostgreSQL13にて、以下の2パターンで、パーティションテーブルを作成しました。


パターン①:主キーとパーティションキーが異なるテーブル
主キー:カラムA
パーティションキー:カラムB


→親テーブルには主キーが設定されず、パーティションごとの子テーブルにのみ主キーが設定される。
パーティションが別であれば、重複する主キーを登録することが出来る。


パターン②:主キーとパーティションキーが同一のパターン
主キー:カラムA
パーティションキー:カラムA


→親テーブルに主キーが設定される。
パーティションが別であっても、主キー重複は許されませんでした。

現在、oracle→Postgresへのテーブル移行を行っていて、
Oracleであれば、パターン①でテーブル作成しても、パーティション跨ぎで主キーが張られるのですが、
Postgresだと上記の通り、パターン①だとパーティションごとに主キーが張られて、パーティションさえ異なれば、主キー重複が許されてしまいます。

Postgresでパターン①でテーブル作成しても、
親テーブル全体で主キーを張る方法あるか、わかる方いらっしゃいますでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こちらにおおまかな対策が出そろってるように見えます。
https://stackoverflow.com/questions/12298853/unique-index-over-postgresql-partitions

投稿2022/03/19 12:32

pea

総合スコア453

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

numa1000

2022/03/21 08:36

ありがとうございます。 回答読みました。 トリガーつけるとか、パーティション項目をキー項目に加えるとか、対策としてはそのあたりになるのですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問