高度な設定

トリガ

トリガは、通常DBやトランザクションDBへの登録(INSERT)や更新(UPDATE)に合わせて自動処理をする機能です。

演算

登録/更新するデータの数値計算や文字結合ができます。

(1)DBタイプ別対応表

DBタイプ 新規登録 更新 削除
 通常DB [normal]  ○  ○  ×
 仮想DB(フィルタ型) [view_1]  ×  ×  ×
 仮想DB(連携型) [view_n]  ×  ×  ×
 仮想DB(集合型) [union]  × ×  ×
 ステップアンケートDB [inquire]  ×  × ×
 ガジェット [gadget]  ×  ×  ×
 ストップDB [stop]  ×  ×  ×
 画像型 [attachment]  ×  ×  ×
 トピックDB [forum.topic]  × ×  ×
 コメントDB [forum.comment]  ×  ×  ×
 トランザクションDB [transaction]  ○  ×  ×

(2)演算式仕様

演算結果格納フィールドに格納する演算式を設定します。

演算トリガフィールド別対応表
http://www.smp.ne.jp/update/ver1115/calculate_trigger_ver11.5a.pdf

演算式には以下の項目を利用できます。

  • 演算トリガフィールド別対応表に存在するフィールド
  • 演算トリガフィールド別対応表に存在する演算子
  • 演算トリガフィールド別対応表に存在する関数
  • シングルクォーテーションで囲んだ固定文字列
  • 数字
  • 括弧()
  • NULL
  • IS NULL、IS NOT NULL(値の存在判定時に使用)
演算式設定時の注意事項
  • 演算結果格納フィールドのフィールドタイプによって格納できる値が異なるため、それぞれのタイプに合わせた式を構築する必要があります。
  • セレクト、マルチセレクト、マルチセレクト(128項目)のフィールドは設定されているラベルの値のみ、固定値として演算式に格納できます。
  • 曜日(○曜日)のフィールドは日から月までのいずれかの値を固定値として演算式に格納できます。
  • セミコロンを式に使用できません。
  • 式として成立しないもの、不正な文字列が存在するものなどは設定できません。

(3)式の操作

ア.演算結果格納フィールドでラベル、曜日以外を選択した場合

・フィールド
演算式及び条件式に使用するフィールドを選択します。

・固定値
固定値を入力できます。

・関数
演算式及び条件式に使用できる関数を選択できます。

関数 入力例
文字数 length(対象の文字列(1))
関数 : length(‘111-222-333’)  結果 : 13
バイト数 octet_length(対象の文字列(1))
関数 : octet_length(‘番号111-222-333’) 結果 : 17
絶対値 abs(引数(1))
関数 : abs:(-12.2) 結果 : 12.2
四捨五入 round(引数(1), 引数(2))
関数 : round(12.456, 2)  結果 : 12.46
切り捨て trunc(引数(1), 引数(2))
関数:Trunc(12.456, 2) 結果 : 12.45 切り上げの場合:trunc(12.456 + .009)
文字列検索 strpos(対象の文字列(1), 検索する文字列(2))
関数 : strpos(‘111-222-333’, ‘-‘) 結果 : 4
文字列分割 split_part(対象の文字列(1), 分割する文字列(2)), 取得する要素番号(3))
関数 : split_part(‘111-222-333’, ‘-‘ , 1)  結果 : 111
文字列切り出し substr(対象の文字列(1), 開始位置(2)、終了位置(3))
関数 : substr(‘111-222-333’, 1 , 4)  結果 : 111-
文字列置換 replace(対象の文字列(1), 変換前文字列(2)、変換後文字列(3))
関数 : replace(‘111-222-333’, ‘-‘ , ‘@’) 結果 : 111@222@333
最大値 greatest(引数(1)、引数(2)・・・(30))
関数 : greatest(15, 20.5, 24.5) 結果 : 24.5
最小値 least(引数(1)、引数(2)・・・(30))
関数 : least(15, 20.5, 24.5) 結果 : 15
イ.演算結果格納フィールドでラベルを選択した場合

・ラベル
演算結果格納フィールドがセレクト、マルチセレクト、マルチセレクト(128項目)の場合、格納する固定値を選択できます。

ウ.演算結果格納フィールドでラベルを選択した場合

・曜日
演算結果格納フィールドが曜日(○曜日)の場合、格納する固定値を選択できます。

エ.演算子

式に使用できる演算子を選択できます。

演算子 意味 入力例
数字同士で加算をする $intA$ + 1
数字同士で減算をする $intA$ – 1
× 数字同士で乗算をする $intA$ * 2
÷ 数字同士で除算をする $intA$ / 2
数字同士で除予算をする $intA$ % 2
先に計算したい式を囲む $intA$ * ($intB$ – 2)
先に計算したい式を囲む $intA$ * ($intB$ – 2)
文字列を結合する $textA$ ‖ ‘_example’
NULL 値がNULLかどうかを判定する $textA$ IS NULL
NOT 式を否定するNOT $textA$ IS NULL
AND 二つの式の論理積を求める $textA$ IS NULL AND $intA$ > 0
OR 二つの式の論理和を求める $textA$ IS NULL OR $intA$ > 0
二つの値が等価である事を表す $textA$ = $textB$
!=> 二つの値が等価でない事を表す> $textA$ != $textB$
>= 左辺の値が右辺の値より大きいか等しい事を表す $intA$ >= $intB$
<= 右辺の値が左辺の値より大きいか等しい事を表す $intA$ <= $intB$
左辺の値が右辺の値より大きい事を表す $intA$ > $intB$
右辺の値が左辺の値より大きい事を表す $intA$ < $intB$

(4)演算トリガ制限事項

ア.使用できない記号

セミコロン : 「;」

イ.特定の場合の書き方
項目 書き方
固定値で実数を使用する クォーテーションでくくる 0.1′ + $mm_real$
固定値で文字列を使用する クォーテーションでくくる ‘テスト’ || $mm_text$
文字列内でクォーテーションを使用する 文字列内のクォーテーションはバックスラッシュでエスケープする ‘\’テスト\’ ‘ || $mm_text$
値がNULLかどうかを判定する ・ *** IS NULL (NULLならtrue)
・ *** IS NOT NULL (NULLでなければtrue)
性別の固定値 ・ 男性 : ‘男’
・ 女性 : ‘女’
日付計算、時間計算をする場合の固定値 ・ 年 : ‘1years’ or ‘-1years’
・ 月 : ‘1months’ or ‘-1months’
・ 週 : ‘1weeks’ or ‘-1weeks’
・ 日 : ‘1days’ or ‘-1days’
・ 時 : ‘1hours’ or ‘-1hours’
・ 分 : ‘1minutes’ or ‘-1minutes’
・ 秒 : ‘1seconds’ or ‘-1seconds’
$mm_regist_date$ + ‘-1years’ +’1months’
ウ.日付計算の計算制限

日付型のフィールドと日付型のフィールドを計算することはできない。

例)× $mm_regist_date$ + $mm_date_ymdhhmmss$
× $mm_date_ymdhhmmss$ – ‘-mm_date_ymd’

エ.時間計算の固定値の制限

固定値を時間計算に使用する場合、+ を使用することはできない。

例)× $mm_interval_ym$ + ‘1day’
○ $mm_interval_ym$ – ‘-1day’

オ.時間計算の計算制限

時間型(mm_interval_*)から日付型(mm_date_*、mm_regist_date, mm_optout)を足したり引いたりできない。

例)× $mm_interval_ym$ + $mm_date_ymdhhmmss$
× $mm_interval_ym$ – $mm_date_ymdhhmmss$

カ.オプトアウトフィールドの固定値の制限

固定値をオプトアウトフィールドとの計算に使用する場合、- を使用することはできない。

例)× $mm_optout$ – ‘1days’
○ $mm_optout$ + ‘-1days’

キ.数値計算の制限

数値計算する際、0で割る計算をすると、必ずエラーになる。
※ 割るフィールドの値が0になる際も同じくエラーになる。

例)$mm_integer$ / 0
$mm_real$ / $mm_integer$ ← $mm_integer$に0が入る

ク.関数の制限

引数には適切な型の値(もしくはフィールド、返り値が適切な型である関数)を設定する必要がある。

例)○substr ($mm_number32$, 0 , $mm_integer$)
○substr ($mm_number32$, 0, octet_length($mm_email$))
○substr ($mm_number32$, 0, octet_length($mm_email$))

ルックアップ

登録/更新時に、他のDBの値を取得し、登録データに含めます。

(1)参照データの抽出条件

  • 同一のフィールドタイプのみ対応付けができます。
  • 抽出条件は、必ず完全一致となります。

(2)参照データの抽出条件

  • 同一のフィールドタイプのみ対応付けができます。
  • 値がそのまま格納されます。

(3)DBタイプ別対応表

DBタイプ トリガDBとして対応 参照DBとして対応
通常DB [normal]
仮想DB(フィルタ型) [view_1] ×
仮想DB(連携型) [view_n] ×
仮想DB(集合型) [union] × ×
ステップアンケートDB [inquire] × ×
ガジェット [gadget] × ×
ストップDB [stop] × ×
画像型 [attachment] × ×
トピックDB [forum.topic] × ×
コメントDB [forum.comment] × ×
トランザクションDB [transaction]

(4)フィールド別対応表

フィールド名 対応 フィールド名 対応
メールアドレス 登録日時
メールアドレス(大・小文字を無視) 日付(○年○月○日 ○時○分○秒)
性別 日付(○年○月○日 ○時○分)
郵便番号 日付(○年○月○日 ○時)
都道府県 日付(○年○月○日)
電話番号 日付(○年○月)
通貨 月日(○月○日)
セレクト 時刻(○時○分)
マルチセレクト 曜日(○曜日)
マルチセレクト(128項目) 時間(○年○カ月)
テキストフィールド(32 bytes) 時間(○日)
テキストフィールド(32 bytes)かな 時間(○週間)
テキストフィールド(32 bytes)カナ クリックカウント, HTML開封チェック
テキストフィールド(32 bytes)ローマ字 不正アドレスフラグ
テキストフィールド(64 bytes) モバイルドメインフラグ
テキストフィールド(64 bytes)かな 重複フラグ
テキストフィールド(64 bytes)カナ オプトアウト
テキストフィールド(64 bytes)ローマ字 配信エラー
テキストフィールド(128 bytes) エラーカウント
テキストエリア(256 bytes) パスワード ×
テキストエリア(512 bytes) 簡易パスワード
テキストエリア(1024 bytes) メッセージダイジェスト(MD5)
テキストエリア(2048 bytes) メッセージダイジェスト(SHA1)
テキストエリア(4096 bytes) メッセージダイジェスト(SHA256)
テキストエリア(8192 bytes) ルックアップキー ×
数字・記号・アルファベット(6 bytes) 緯度経度
数字・記号・アルファベット(32 bytes) 画像(100KiB) ×
整数 ファイル
実数
ブーリアン

(5)エラーメッセージ

エラー発生場所\
エラー内容
抽出条件のフィールドの入力値がNULLの場合 複数レコード抽出された場合 1レコードも抽出されなかった場合
DBオペレーション 【ルックアップトリガ】
抽出条件のフィールドの値にNULLが使用されています
【ルックアップトリガ】
参照するレコードが複数抽出されました
【ルックアップトリガ】
参照するレコードがありませんでした
データ登録 【ルックアップトリガ】
抽出条件のフィールドの値にNULLが使用されています
【ルックアップトリガ】
参照するレコードが複数抽出されました
【ルックアップトリガ】
参照するレコードがありませんでした
登録フォーム
(新規作成)
登録できませんでした(エラーコード:2200) 登録できませんでした(エラーコード:2201) 登録できませんでした(エラーコード:2202)
登録フォーム
(更新)
更新できませんでした(エラーコード:2200) 更新できませんでした(エラーコード:2201) 更新できませんでした(エラーコード:2202)
会員情報ページ
(マイエリア)
更新できませんでした(エラーコード:3355) 更新できませんでした(エラーコード:3356) 更新できませんでした(エラーコード:3357)
一覧表編集 更新できませんでした 更新できませんでした 更新できませんでした

(6)ルックアップトリガ制限事項

連携による抽出ルールを使用する際の制限事項
  • 間接連携を使用する。詳細設定で、マスタにデータが入った場合に自動連携するを選択する。
  • マスタに対して、連携による抽出ルールを作成する。
  • 参照元DBに、DBオペから参照するデータを登録する。
  • マスタに対して、登録時にルックアップトリガを、2で作成した抽出ルールを発動条件に指定して作成する。
  • マスタに3で登録したデータと連携するデータを登録する。

以上の設定の場合に、登録したデータと連携させるトリガがINSERT AFTERで設定されており、ルックアップトリガがINSERT BEFOREで発動するため連携するデータとして、認識されていない状態になってしまうため、トリガが発動条件にマッチせずに、発動しない。

フィールド値自動生成

登録(INSERT)時にランダム値や連番の整数値を登録する機能です。
キーの自動発番やパスワードのランダム値登録に利用できます。

設定できるフィールドタイプ

  • 数字・記号・アルファベット(32bytes)
  • 整数
  • 簡易パスワード