データベースの削除制御(delete)

SQLのDELETE句を組立て実行します。処理結果件数は処理中に参照が可能な他、
mappingタグを用いてDataBeanに返却できます。
使用可能箇所
run
Sub Tags
link, join, where

属性
id
処理結果件数を管理するID
entity
テーブル名/ビュー名、またはビュー・クラス名
transaction
トランザクション設定ファイルのXMLファイル名(例:default)
database
トランザクション設定ファイル内の接続設定のコード
schema
標準スキーマ
exclusion
排他制御の対象カラム(カンマ区切りで複数指定可能)
※Beanの項目名とカラム名が異なる場合は「カラム名:項目名」
※link, joinタグにてテーブル結合している場合は「デーブル名.カラム名:項目名」
when
多くのTagsでサポートしている「実行可否判定のための属性」です。 (こちらを参照)

(記述例) 「SYS_USER」のUSER_CODEに対しDataBeanのIDの値をキーとして対象レコードを削除
また、排他制御としてUPDATE_DATEがBeanの持つ値と異なる場合は削除せず
排他制御エラーを返却します。

    <delete id="DEL_COUNT" entity="SYS_USER" exclusion="UPDATE_DATE">
     <where>
      <data key="ID" map="USER_CODE" type="eq" def="NULL" />
     </where>
    </delete>
  

テーブルの直積(link)と外部結合(join)

deleteタグを用いてデータベースを更新する際の条件のために参照するテーブルを等結合または外部結合します。
※Microsoft社 SQL ServerなどUSINGに対応していない一部のデータベースでは動作しません
使用可能箇所
delete
Sub Tags
記述不可

属性
entity
テーブル名/ビュー名
schema
標準のスキーマ
keys
結合条件となるカラム名(カンマ区切りにて複数指定可)
結合条件のカラム名が異なる場合は、比較演算子を用いて条件を記述します
※結合条件内にはコマンド・テキストが使用できます。
base
結合先のテーブル名
when
多くのTagsでサポートしている「実行可否判定のための属性」です。 (こちらを参照)

(記述例) 「SYS_USER_AUTHORITY」のAUTH_CODEに'ADMIN'をもつ「SYS_USER」を削除
また、排他制御としてUPDATE_DATEがBeanの持つ値と異なる場合は削除せず排他エラーを返却します。
 
SQL文 DELETE FROM SYS_USER LEFT OUTER JOIN SYS_USER_AUTHORITY
    ON SYS_USER_AUTHORITY.CORPORATE_CODE = SYS_USER.CORPORATE_CODE
    AND SYS_USER_AUTHORITY.USER_CODE = SYS_USER.USER_CODE
   WHERE SYS_USER_AUTHORITY.AUTH_CODE = 'ADMIN'
    AND SYS_USER.UPDATE_DATE = '2020-08-31 10:59:23.123'

    <delete id="DEL_COUNT" entity="SYS_USER" exclusion="SYS_USER.UPDATE_DATE:UPDATE_DATE">
     <link entity="SYS_USER_AUTHORITY" keys="CORPORATE_CODE, USER_CODE"
      base="SYS_USER" />
     <where>
      <data val="ADMIN" map="AUTH_CODE" type="eq"
       base="SYS_USER_AUTHORITY" />
     </where>
    </delete>
  

更新条件(where / data)

deleteタグを用いてデータベースを削除する際の条件が定義できます。
使用可能箇所
delete
Sub Tags
condition, data

where及びdataタグの使い方は、selectタグと同じです(こちらを参照)
 

©Camel engineering LLP