■SI Object Browser 掲示板


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

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

discussion
※各投稿のカラーは対象となる製品に対応しています。【■…OB ■…OBER ■…全般 ■…その他】
※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。
※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。
※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。
DB同期におけるCHECK制約の動作について 2016/02/08 16:11 OBER 1
使用環境
 Ver:OBER 8.2.0.0
 DB :Oracle 12c

CHECK制約において、DB同期が想定したとおりに動作しません。

1.モデル側で設定したCHECK制約をDB同期で反映しても、再度同期を行うと差分として現れる。

 制約は「制約編集画面」から作成したものを、ドメインに対して設定しています。
 初回のDB同期では当然差分として現れますが、その差分をDBに反映した直後にDB同期を
 行うと、同じ制約がそのまま差分として現れます。
 この事象は単一のカラムのみに対しての制約では発生しません。
 制約式に複数のカラムが登場するケースです。
 (hoge_flgが1の時、hoge_date IS NULL 等)

 DB同期は複数カラムの制約には対応していないのでしょうか。
 またはなんらかの設定方法があるのでしょうか。


2.Oracle側で設定したCHECK制約をDB同期でモデルに取り込もうとしても差分として現れない。

 こちらは1と逆の手順を踏んだ際に、差分として現れないため、モデルに取り込めない
 という問題です。
 1と同じく、複数カラムに対しての制約の場合のみ発生します。


3.単一カラムの場合でも、制約名がDDLに反映されない。

 名称なしのDDLとなるため、SYS_~というOracleが自動で設定する制約名になって
 しまいます。
 制約名をつけたDDLは作成できないのでしょうか。
 仮にDB側で設定した制約を取り込んだ場合も、制約名はモデルに取り込まれませんでした。
こんにちは
OBサポートです。

お問合せいただいた件について、下記にてご回答致します。

>1.モデル側で設定したCHECK制約をDB同期で反映しても、再度同期を行うと差分として現れる。
>2.Oracle側で設定したCHECK制約をDB同期でモデルに取り込もうとしても差分として現れない。

SI Object Browser ERでは、制約エディタにて作成したものを、
「列制約」としてエンティティに設定できますが、
その場合は複数カラムの制約に対して、
同期処理がうまくいかないことを確認しております。

また、エンティティエディタにあります「チェック制約」タグにて
設定を行った場合は「表制約」として設定できますが、
こちらは同期処理も問題ないことを確認しております。

「チェック制約」タグの場合はドメインをご利用いただけませんが、
こちらの運用でご検討いただけますでしょうか。

>3.単一カラムの場合でも、制約名がDDLに反映されない。

制約エディタにて作成したものは制約名がDDLに反映しない動作となっております。
エンティティエディタにあります「チェック制約」タグでの
設定に関しましては、制約名も設定されますのでご確認ください。

何卒よろしくお願い申し上げます。