■SI Object Browser 掲示板


ユーザの皆様、開発者、サポート担当者の交流のための掲示板です!

ユーザーの皆様同士で教え合ったりもできる交流の場にしたいと思っていますので、相互協力をよろしくお願いします。
なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。

discussion
※各投稿のカラーは対象となる製品に対応しています。【■…OB ■…OBER ■…全般 ■…その他】
※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。
※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。
※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。
Postgres版でFOREIGN KEYがUNIQUEに! 2022/10/05 15:34 OB 4
SI Object Browser for Postgres 21 (x64)で、外部キーのあるテーブルの定義情報を開き、ソースタブを表示すると、参照整合性制約の定義が、
CONSTRAINT 制約名 FOREIGN KEY (制約対象列) REFERENCES 参照先の表(参照先の主キー)
となるべきところが、
CONSTRAINT 制約名 UNIQUE (制約対象列) REFERENCES 参照先の表(参照先の主キー)
となります。

例えば、以下のSQLで、参照先、参照元の2つのテーブルを作成します。

CREATE TABLE "public"."参照先" (
"参照先主キー" character varying(2) NOT NULL,
"参照項目" character varying(8),
CONSTRAINT "PK_参照先" PRIMARY KEY ("参照先主キー")
)
;

CREATE TABLE "public"."参照元" (
"参照元主キー" character varying(4) NOT NULL,
"参照先主キー" character varying(2),
CONSTRAINT "PK_参照元" PRIMARY KEY ("参照元主キー"),
CONSTRAINT "FK_参照元_参照先" FOREIGN KEY ("参照先主キー") REFERENCES "public"."参照先"("参照先主キー")
)
;

オブジェクトリストから参照元のソースを開くと、

CREATE TABLE "public"."参照元"
(
"参照元主キー" character varying(4) NOT NULL,
"参照先主キー" character varying(2),
CONSTRAINT "PK_参照元" PRIMARY KEY ("参照元主キー") USING INDEX TABLESPACE "pg_default",
CONSTRAINT "FK_参照元_参照先" UNIQUE ("参照先主キー") REFERENCES "参照先"("参照先主キー")
)
;

となりますが、このSQLは文法エラーとなります。

正しいソースが表示されるようにして下さい。
OBサポートです。

■外部制約がUNIQUE制約として表示される事象について
お問い合わせ頂いた事象につきまして、弊社でも同様の事象が再現いたしました。
本事象はプログラム側の不備で、
特定のオプションによって外部制約となる箇所(FOREIGN KEYキーワード)がユニーク制約(UNIQUEキーワード)としてDDLが表示されているものと考えられます。
※本事象はSI Object Browser側の解析不備によるもののため、
 実際のデータベース側では外部制約が定義されております。

【回避策】
「ツール」> 「定義情報」>「SQL文に領域情報を含める」のチェックをONにすることで回避が可能です。
上記オプションのチェックがOFFの際にSI Object Browser側の解析に誤りがあり
UNIQUEキーワードとしてソースが生成されております。

大変ご不便ご迷惑をおかけしてしまい、誠に申し訳ありません。
何卒よろしくお願い申し上げます
ご提示頂きました回避策を実施致しましたが、状況が変わりません。
プログラムの再起動もしてみましたが、同様です。
OBサポートです。
事象改善されない件、承知いたしました。

該当のオプション画面ですが、
オプション変更後に確定がされているか今一度お試しいただくことは可能でしょうか。

「ツール」 > 「オプション」 > 「SQL文に領域情報を含める」のチェックをONに変更
⇒変更後にダイアログ下部の「OK」によって設定値が確定いたします。

設定変更後、再度テーブルのソースタブを表示し
FOREIGN KEYが表示されるかどうか、ご確認をお願いいたします。
※ソースが最新化されていない場合には、テーブル画面上の「戻す」ボタンによって最新化が可能です。

大変お手数ですが、何卒よろしくお願い申し上げます。
回避策の件、私の確認ミスでした。
無事、FOREIGN KEYと表示されるようになりました。
お騒がせして申し訳ありませんでした。