暗黙条件
最終更新日: 2020年3月14日
R8 | R9
商品モデルの「価格」が「0より大きい」ものだけを検索対象とする、という暗黙条件を加えた例を示します。図1で、価格が0円の商品を登録します。
図2に示すように、検索結果に表示されません。これは隠れた検索条件項目「価格」が用意されており、「0より大きい」という条件が常に有効になっているためです。
暗黙条件を設定すると、条件に漏れたデータは誰も閲覧できなくなります。そこで、この条件が適用されない権限を設定することができます。
図3では「商品管理者」というプリンシパルを用意した例を示します。
このプリンシパルをもったアカウントでログオンした場合、商品データはすべて検索されます。
暗黙条件を適用したいモデル項目の詳細定義ダイアログを開きます。「暗黙条件」タブで、条件式を設定します。
図5の例では、「0より大きい」と指定しています。
暗黙条件は複数、指定することができます。すべての条件を満たすデータだけが検索対象になります。
図5の設定では、どのアカウントも(条件に適合しなかったデータを)検索することはできません。これを回避するために、「適用外の権限」を同時に指定することができます。[後述]
はじめに、このモデルに新しい権限(パーミッション)を作成します。(図6)
ここでは「除外 (p_except)」という名前の権限を用意しました。
追加した権限を管理するためのプリンシパルを作成します。(図8)
ここでは「商品管理者 (product_mgr)」というプリンシパルを用意しました。除外パーミッションを持ちます。
暗黙条件の設定で、作成した "p_except" (除外) パーミッションを「適用外の権限」欄に設定します。
ここではパーミッションを設定します。プリンシパルではありません。
図3に示すように、このプリンシパルをもったアカウントは、暗黙条件がスキップされます。
暗黙条件は、データベース問合せ時に SQL の where 句に自動的に付与されます。
このため、データベース自体にはデータが格納されます。システム利用時には、検索されることはありません。(適用外の権限を除く)
文字列型項目の場合、条件値の部分に項目を参照せずに計算結果を取得できる関数を利用することができます。
USERINFO関数の戻り値は文字列型です。整数型の値を使いたい場合は、TOINTなどの関数と併用してください。
暗黙条件には、関数の引数に特定モデルの項目が紐付かないものは利用できます。
例えば絶対値をとる ABS という関数を例にとって説明します。
は利用できますが
は利用できません。
「日付」「時間」「日付と時間」項目の暗黙条件に "now" 表記を使用することができます。
関数の結果が NULL または 空文字となる場合は、暗黙条件による絞込は行われません。
システム管理者には暗黙条件が適用されません。
暗黙条件と、通常の検索条件を併用することはできません。この場合は暗黙条件が優先され、検索条件に値を入力しても無視されます。
そのモデルの検索・一覧表示画面を用意しなかった場合、暗黙条件は利用できません。(設定は無効となります。)
暗黙条件が効かないという場合の確認方法を説明します。
例
暗黙条件が適用されない権限を用意する
定義方法
シンプルな定義
注意
適用外の権限を設定する
注意
暗黙条件の仕組み
関数を利用する
ログオンアカウントを暗黙条件とする
USERNAME()
履修年度を暗黙条件とする
FISCALYEAR(NOW())
USERINFO関数を使ってjuserの値を取得する
USERINFO("name")
TOINT(USERINFO("age"))
利用できない関数の考え方
ABS(-1)
ABS(${item1})
特別表記nowを利用する
関数を利用した場合
OR検索
仕様・制約
システム管理者の扱い
通常の検索条件との併用は不可
範囲検索との併用は不可
検索・一覧表示画面が必要
トラブルシューティング