一意制約の詳細
最終更新日: 2020年3月14日
R8 | R9
一意制約設定を行った項目の一部を未入力(null)として保存した場合の動作は、データベースによって異なります。
項目A, B, Cに一意制約を定義します。ここで A:aaa, B:null, C:ccc というデータを登録します。
その後、A:aaa, B:null, C:ccc のデータを再び登録しようとすると、次のようになります。
詳細は、ご利用のデータベースのマニュアルをお読みください。
ここで指定した一意制約の設定は、次のファイルで確認できます。
テキストエディタでファイルの内容を確認することができます。次の DDL が含まれています。
一意制約名は、利用するデータベースが許可する制約名の最大長に合わせて調整されます。
具体的には最大長を超える名前の場合、短縮されます。(短縮の結果、重複する場合には、これを重複しないように一意な名前を割り当てます。これはテーブル名や項目名でも同様です。)
「テーブルを作成する」を無効にしたモデルに一意制約を設定することはできません。(一意制約はデータベースの機能を利用しているためです。)
サブモデルに設定することはできません。メインモデルに設定して下さい。(つまりメインモデルとサブモデルで異なる一意性制約を設定することはできません。)
繰り返しコンテナ内の複数の項目に対して、一意制約を設定することができます。しかし次の場合は設定することができません(設定してもエラーとなるか、一意制約が有効になりません。)
Wagbyが標準で提供している一意制約を使わず、スクリプトの利用で回避してください。(スクリプトでデータをチェックし、ユニーク性を確認します。)
データベースによる挙動の違い
生成されるDDL
wagbydesigner/webapps/wagbydesigner/WEB-INF/env/work/dbschema/createddl/モデルID.ddl
alter table "モデルID"
add constraint jfcuk_モデルID_設定した名前 unique ("項目名");
一意制約名の自動調整
仕様・制約
テーブルの作成が必要
サブモデル
繰り返しコンテナと一意制約の関係
回避策