データベースの削除制御(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タグと同じです(こちらを参照)。