■SI Object Browser 掲示板
|
ユーザの皆様、開発者、サポート担当者の交流のための掲示板です! ユーザーの皆様同士で教え合ったりもできる交流の場にしたいと思っていますので、相互協力をよろしくお願いします。 なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。 |
|
| ※各投稿のカラーは対象となる製品に対応しています。【■…OB ■…OBER ■…全般 ■…その他】 ※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。 ※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。 ※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。 | |
設定した参照整合性をDDLに反映させる方法
2026/05/18 10:23
OBER
8
かたやま
ご担当者様
お世話になります。
標題の質問があります。
エンティティ間で参照整合性(FK)の設定をして
フォワードエンジニアリング機能からSQLファイルを出力したのですが
参照整合性を実現するDDL(CREATE FOREIGN TABLE)がありませんでした。
上記をSQLファイルに出力するためには何か設定など必要なのでしょうか。
それとも参照整合性を実現するDDLを出力する機能はなく、
あくまでオブジェクトブラウザERで参照した時の表示上の機能ということなのでしょうか。
以上、よろしくお願いいたします。
バージョン:23.0.0.0
お世話になります。
標題の質問があります。
エンティティ間で参照整合性(FK)の設定をして
フォワードエンジニアリング機能からSQLファイルを出力したのですが
参照整合性を実現するDDL(CREATE FOREIGN TABLE)がありませんでした。
上記をSQLファイルに出力するためには何か設定など必要なのでしょうか。
それとも参照整合性を実現するDDLを出力する機能はなく、
あくまでオブジェクトブラウザERで参照した時の表示上の機能ということなのでしょうか。
以上、よろしくお願いいたします。
バージョン:23.0.0.0
返信を投稿
OBER
OBサポート
こんにちは。OBサポートです。
フォワードエンジニアリング画面のオプションタブで、インデックスの出力>外部キー (FK)にチェックを入れることで解決する可能性がございます。
※「物理モデルのみ」または「論理・物理モデル」のリレーションシップの場合のみ有効となります。「論理モデルのみ」のリレーションシップの場合は当オプションがONでも外部キー制約のDDLは生成されません。
大変お手数ですが、ご確認の程よろしくお願い致します。
フォワードエンジニアリング画面のオプションタブで、インデックスの出力>外部キー (FK)にチェックを入れることで解決する可能性がございます。
※「物理モデルのみ」または「論理・物理モデル」のリレーションシップの場合のみ有効となります。「論理モデルのみ」のリレーションシップの場合は当オプションがONでも外部キー制約のDDLは生成されません。
大変お手数ですが、ご確認の程よろしくお願い致します。
返信を投稿
OBER
かたやま
ご担当者様
追加で質問させてください。
外部キー(例に記載)を大量にオブジェクトブラウザERに取り込む必要がある場合
例のようなスクリプトファイルを取り込むことは可能でしょうか。
数個であれば、画面から依存型リレーションシップを設定すればいいですが
多数あると操作が煩雑になりますので、何か方法があればご教示いただけませんでしょうか。
例:ALTER TABLE TG26 ADD CONSTRAINT FK_TG26 FOREIGN KEY (TG26001,TG26002,TG26003,TG26004,TG26005,TG26006) REFERENCES TG25(TG25001,TG25002,TG25003,TG25004,TG25005,TG25006) ON DELETE CASCADE ON UPDATE CASCADE;
追加で質問させてください。
外部キー(例に記載)を大量にオブジェクトブラウザERに取り込む必要がある場合
例のようなスクリプトファイルを取り込むことは可能でしょうか。
数個であれば、画面から依存型リレーションシップを設定すればいいですが
多数あると操作が煩雑になりますので、何か方法があればご教示いただけませんでしょうか。
例:ALTER TABLE TG26 ADD CONSTRAINT FK_TG26 FOREIGN KEY (TG26001,TG26002,TG26003,TG26004,TG26005,TG26006) REFERENCES TG25(TG25001,TG25002,TG25003,TG25004,TG25005,TG25006) ON DELETE CASCADE ON UPDATE CASCADE;
返信を投稿
OBER
かたやま
追加情報です。
ファイル→スクリプト取込を実施したところ、テーブルは存在するのに以下のとおりのエラーが発生します。
スクリプト取込 [ C:\test.SQL ]
変更情報を読込中...
《エラー》
alter table tg26 add constraint fk_tg26 foreign key (tg26001,tg26002,tg26003,tg26004,tg26005,tg26006) references tg25(tg25001,tg25002,tg25003,tg25004,tg25005,tg25006);
対象テーブルが見つかりませんでした
ファイル→スクリプト取込を実施したところ、テーブルは存在するのに以下のとおりのエラーが発生します。
スクリプト取込 [ C:\test.SQL ]
変更情報を読込中...
《エラー》
alter table tg26 add constraint fk_tg26 foreign key (tg26001,tg26002,tg26003,tg26004,tg26005,tg26006) references tg25(tg25001,tg25002,tg25003,tg25004,tg25005,tg25006);
対象テーブルが見つかりませんでした
返信を投稿
OBER
OBサポート
こんにちは。OBサポートです。
ご認識の通り、スクリプト取込でSQLによる外部キー取込が可能かと存じます。
考えられる原因としては、
・大文字小文字の違いでテーブルを認識できていない
・オプションタブの「このモデルに追加でリバースする+既存オブジェクトは上書きする(再作成)」がOFFになっている
のどちらかの可能性がございます。
特に後者につきましては、こちらの設定がOFFの場合空のモデルにALTER文を流す処理となってしまいますため、対象モデルを開いて設定をONにしたうえで、お試しいただけますと幸いです。
大変お手数ですが、ご確認の程よろしくお願い致します。
ご認識の通り、スクリプト取込でSQLによる外部キー取込が可能かと存じます。
考えられる原因としては、
・大文字小文字の違いでテーブルを認識できていない
・オプションタブの「このモデルに追加でリバースする+既存オブジェクトは上書きする(再作成)」がOFFになっている
のどちらかの可能性がございます。
特に後者につきましては、こちらの設定がOFFの場合空のモデルにALTER文を流す処理となってしまいますため、対象モデルを開いて設定をONにしたうえで、お試しいただけますと幸いです。
大変お手数ですが、ご確認の程よろしくお願い致します。
返信を投稿
OBER
かたやま
ご教示ありがとうございます。
先般の「対象テーブルが見つかりませんでした」というエラーを回避することができました。
ただスクリプトファイル取込後、子テーブル側(TG26)のレイアウトが変わってしまいました。
こちら解消することは可能でしょうか。
ご教示のほどよろしくお願いいたします。
--スクリプトファイル---------------
ALTER TABLE TG26 ADD CONSTRAINT FK_TG26 FOREIGN KEY (TG26001,TG26002,TG26003,TG26004,TG26005,TG26006) REFERENCES TG25(TG25001,TG25002,TG25003,TG25004,TG25005,TG25006);
--↓スクリプトファイル取込前↓---------------
CREATE TABLE TG25
(
TG25001 CHAR(3) NOT NULL,
TG25002 CHAR(10) NOT NULL,
TG25003 CHAR(6) NOT NULL,
TG25004 NUMERIC NOT NULL,
TG25005 CHAR(6) NOT NULL,
TG25006 CHAR(7) DEFAULT '00D0000'::bpchar NOT NULL
)
;
ALTER TABLE TG25
ADD CONSTRAINT tg25_pkey PRIMARY KEY(TG25001, TG25002, TG25003, TG25004, TG25005, TG25006)
;
CREATE TABLE TG26
(
TG26001 CHAR(3) NOT NULL,
TG26002 CHAR(10) NOT NULL,
TG26003 CHAR(6) NOT NULL,
TG26004 NUMERIC NOT NULL,
TG26005 CHAR(6) NOT NULL,
TG26006 CHAR(7) DEFAULT '00D0000'::bpchar NOT NULL,
TG26007 CHAR(6) NOT NULL
)
;
ALTER TABLE TG26
ADD CONSTRAINT tg26_pkey PRIMARY KEY(TG26001, TG26002, TG26003, TG26004, TG26005, TG26006, TG26007)
;
--↑スクリプトファイル取込前↑---------------
--↓スクリプトファイル取込後↓---------------
CREATE TABLE TG25
(
TG25001 CHAR(3) NOT NULL,
TG25002 CHAR(10) NOT NULL,
TG25003 CHAR(6) NOT NULL,
TG25004 NUMERIC NOT NULL,
TG25005 CHAR(6) NOT NULL,
TG25006 CHAR(7) DEFAULT '00D0000'::bpchar NOT NULL
)
;
ALTER TABLE TG25
ADD CONSTRAINT tg25_pkey PRIMARY KEY(TG25001, TG25002, TG25003, TG25004, TG25005, TG25006)
;
CREATE TABLE TG26
(
TG26001 CHAR(3) NOT NULL,
TG26002 CHAR(10) NOT NULL,
TG26003 CHAR(6) NOT NULL,
TG26004 NUMERIC NOT NULL,
TG26005 CHAR(6) NOT NULL,
TG26006 CHAR(7) DEFAULT '00D0000'::bpchar NOT NULL,
TG26007 CHAR(6) NOT NULL,
TG25001 CHAR(3) NOT NULL,
TG25002 CHAR(10) NOT NULL,
TG25003 CHAR(6) NOT NULL,
TG25004 NUMERIC NOT NULL,
TG25005 CHAR(6) NOT NULL,
TG25006 CHAR(7) DEFAULT '00D0000'::bpchar NOT NULL
)
;
ALTER TABLE TG26
ADD CONSTRAINT tg26_pkey PRIMARY KEY(TG26001, TG26002, TG26003, TG26004, TG26005, TG26006, TG26007, TG25001, TG25002, TG25003, TG25004, TG25005, TG25006)
;
ALTER TABLE TG26
ADD CONSTRAINT FK_TG26 FOREIGN KEY(TG26001, TG26002, TG26003, TG26004, TG26005, TG26006) REFERENCES TG25 (TG25001, TG25002, TG25003, TG25004, TG25005, TG25006) ON UPDATE NO ACTION ON DELETE NO ACTION
;
--↑スクリプトファイル取込後↑---------------
先般の「対象テーブルが見つかりませんでした」というエラーを回避することができました。
ただスクリプトファイル取込後、子テーブル側(TG26)のレイアウトが変わってしまいました。
こちら解消することは可能でしょうか。
ご教示のほどよろしくお願いいたします。
--スクリプトファイル---------------
ALTER TABLE TG26 ADD CONSTRAINT FK_TG26 FOREIGN KEY (TG26001,TG26002,TG26003,TG26004,TG26005,TG26006) REFERENCES TG25(TG25001,TG25002,TG25003,TG25004,TG25005,TG25006);
--↓スクリプトファイル取込前↓---------------
CREATE TABLE TG25
(
TG25001 CHAR(3) NOT NULL,
TG25002 CHAR(10) NOT NULL,
TG25003 CHAR(6) NOT NULL,
TG25004 NUMERIC NOT NULL,
TG25005 CHAR(6) NOT NULL,
TG25006 CHAR(7) DEFAULT '00D0000'::bpchar NOT NULL
)
;
ALTER TABLE TG25
ADD CONSTRAINT tg25_pkey PRIMARY KEY(TG25001, TG25002, TG25003, TG25004, TG25005, TG25006)
;
CREATE TABLE TG26
(
TG26001 CHAR(3) NOT NULL,
TG26002 CHAR(10) NOT NULL,
TG26003 CHAR(6) NOT NULL,
TG26004 NUMERIC NOT NULL,
TG26005 CHAR(6) NOT NULL,
TG26006 CHAR(7) DEFAULT '00D0000'::bpchar NOT NULL,
TG26007 CHAR(6) NOT NULL
)
;
ALTER TABLE TG26
ADD CONSTRAINT tg26_pkey PRIMARY KEY(TG26001, TG26002, TG26003, TG26004, TG26005, TG26006, TG26007)
;
--↑スクリプトファイル取込前↑---------------
--↓スクリプトファイル取込後↓---------------
CREATE TABLE TG25
(
TG25001 CHAR(3) NOT NULL,
TG25002 CHAR(10) NOT NULL,
TG25003 CHAR(6) NOT NULL,
TG25004 NUMERIC NOT NULL,
TG25005 CHAR(6) NOT NULL,
TG25006 CHAR(7) DEFAULT '00D0000'::bpchar NOT NULL
)
;
ALTER TABLE TG25
ADD CONSTRAINT tg25_pkey PRIMARY KEY(TG25001, TG25002, TG25003, TG25004, TG25005, TG25006)
;
CREATE TABLE TG26
(
TG26001 CHAR(3) NOT NULL,
TG26002 CHAR(10) NOT NULL,
TG26003 CHAR(6) NOT NULL,
TG26004 NUMERIC NOT NULL,
TG26005 CHAR(6) NOT NULL,
TG26006 CHAR(7) DEFAULT '00D0000'::bpchar NOT NULL,
TG26007 CHAR(6) NOT NULL,
TG25001 CHAR(3) NOT NULL,
TG25002 CHAR(10) NOT NULL,
TG25003 CHAR(6) NOT NULL,
TG25004 NUMERIC NOT NULL,
TG25005 CHAR(6) NOT NULL,
TG25006 CHAR(7) DEFAULT '00D0000'::bpchar NOT NULL
)
;
ALTER TABLE TG26
ADD CONSTRAINT tg26_pkey PRIMARY KEY(TG26001, TG26002, TG26003, TG26004, TG26005, TG26006, TG26007, TG25001, TG25002, TG25003, TG25004, TG25005, TG25006)
;
ALTER TABLE TG26
ADD CONSTRAINT FK_TG26 FOREIGN KEY(TG26001, TG26002, TG26003, TG26004, TG26005, TG26006) REFERENCES TG25 (TG25001, TG25002, TG25003, TG25004, TG25005, TG25006) ON UPDATE NO ACTION ON DELETE NO ACTION
;
--↑スクリプトファイル取込後↑---------------
返信を投稿
OBER
OBサポート
こんにちは。OBサポートです。
ご不便をおかけし大変申し訳ございません。
社内にて検証致しましたところ、スクリプト取込については親と子でカラム名が異なる外部キーが登録されることが考慮されていない仕組みで実装されておりました。こちらは不具合となります。
取込時オプションで回避不可能なため、大変お手数ですが手動での外部キー登録で運用いただけますようお願い申し上げます。
こちらの不具合につきましては今後のアップデートで改善を検討して参ります。
よろしくお願い致します。
ご不便をおかけし大変申し訳ございません。
社内にて検証致しましたところ、スクリプト取込については親と子でカラム名が異なる外部キーが登録されることが考慮されていない仕組みで実装されておりました。こちらは不具合となります。
取込時オプションで回避不可能なため、大変お手数ですが手動での外部キー登録で運用いただけますようお願い申し上げます。
こちらの不具合につきましては今後のアップデートで改善を検討して参ります。
よろしくお願い致します。
返信を投稿
OBER
かたやま
丁寧なご回答ありがとうございます。
別の方法で対処いたします。
別の方法で対処いたします。
返信を投稿
OBER