【JPIERE-0158】クライアントの初期化と削除

【ポイント】データ削除は計画的に‼

思い通りにデータを削除するためには、「削除プロファイル」というマスタの設定が必要で、予め入念な準備が必要になります。データ削除が必要になった時にあわてずに済むように、導入プロジェクトの初期段階でデータの削除方針を決めておいて、その方針に沿うように「削除プロファイル」を準備し、メンテンナンスしていく事をオススメします。

 

 

クライアントの初期化と削除の種類

クライアント削除

 “クライアント削除”では、選択したクライアントの全てのデータを削除します。

クライアントのトランザクションデータ削除

 “クライアントのトランザクションデータ削除”では、選択したクライアントのトランザクションデータを削除します。

 “全クライアントのトランザクションデータ削除”では、全てのクライアントのトランザクションデータを削除します。

 “クライアントの初期化”では、トランザクションデータとマスタデータを削除する事ができます。トランザクションデータは基本的に全て削除されます。マスタデータは”削除プロファイル”の"削除定義"に従って削除されます。

カスタム削除

 ”削除プロファイル”の"削除定義"に従って、1つのクライアントのデータを自由に削除する事ができます。

 

 

 

 

削除プロファイルについて

 “クライアントの初期化と削除”プロセスは、“削除プロファイル”の”削除定義”に従って実行されます。”削除プロファイル”に”削除定義”をする事により、”クライアントの初期化と削除”プロセスの処理を柔軟にカスタマイズできます。

 “除定義”とは削除プロファイルに行う設定全般の事です。

"クライアント削除"と削除プロファイルの関係

 “クライアントの削除”では選択したクライアントの全てのデータを削除するため、削除プロファイルは使用しません。

"(全)クライアントのトランザクションデータ削除"と削除プロファイルの関係

 “クライアントのトランザクションデータ削除”と”全クライアントのトランザクションデータ削除”では、トランザクションデータのテーブルの他にも、”削除プロファイル”を使用し、削除するテーブルを追加する事ができます。

"クライアントの初期化"と削除プロファイルの関係

 “クライアントの初期化”では、トランザクションデータとマスタデータを削除する事ができます。トランザクションデータは基本的にすべて削除されますが、マスタデータは”削除プロファイル”の"削除定義"に従って削除されます。

"カスタム削除"と削除プロファイルの関係

 “カスタム削除”では、全て”削除プロファイル”の“削除定義”に従って処理されます。上級者用の処理です。

 

 

 

"トランザクションテーブル"と"初期化テーブル"について

 “クライアントの初期化と削除”プロセスを意図した通りに、実行するためには”トランザクションテーブル”と”初期化テーブル”について理解する必要があります。

"トランザクションテーブル"について

 "トランザクションテーブル"は、主に伝票などのトランザクションデータを格納しているテーブルで、クライアントの初期化と削除プロセスで予め定義されています。トランザクションテーブルは”削除テーブルの確認レポート”で確認できます。

 カスタム削除”以外の方法を選択した場合、トランザクションテーブルのデータは基本的に全て削除されます。

【補足説明】クライアントの初期化と削除における"トランザクションテーブル"

 クライアントの初期化と削除における"トランザクションテーブル"は、いわゆる伝票[Document]と同じ意味ではありません。ここで言うトランザクションテーブルは、クライアントの初期化と削除プロセスにおいて、事前に予め"トランザクションテーブル"として定義されているテーブルの事です。

 

"初期化テーブル"について

 “初期化テーブル”は、主にマスタデータを格納しているデーブルで、クライアントの初期化と削除プロセスで予め定義されています。初期化テーブルは”削除テーブルの確認レポート”で確認できます。

 “クライアントの初期化”を行う際に、“初期化テーブル”は、”削除プロファイル”に従って削除されます。”削除プロファイル”に削除定義がない初期化テーブルのデータは削除されません。そして、初期化テーブルではないテーブルでかつ削除プロファイルにも削除定義がされていないテーブルのデータは全て削除されます

 

【ポイント】クライアントの初期化と削除プロセスを理解するポイント

  • トランザクションテーブル”と”初期化テーブル”は、” クライアントの初期化と削除”プロセスで予め定義されており、 ”削除テーブルの確認レポート”で確認できる。
  • 削除プロファイル”によって、削除するデータや方法を細かく設定できる。削除するデータや方法を設定する事を"削除定義"という。
  • カスタム削除”以外の方法では、トランザクションテーブルのデータは基本的に全て削除される。
  • クライアントの初期化”において、“初期化テーブル”のデータは、削除プロファイルにそのテーブルの削除定義が無い場合は、削除されない。
  • クライアントの初期化”において、“初期化テーブル”以外のテーブルで、削除プロファイルにそのテーブルの削除定義が無い場合、そのテーブル”のデータは全て削除される。

 

 

 

補足説明及び注意事項、その他

システムクライアントのデータは削除できません。

 “クライアントの初期化と削除”プロセスでは、システムクライアントのデータを削除する事は意図していません。

2024年12月3日(ver11)より

連結経営管理のプラグインを開発するにあたり、カスタム削除の場合にのみ、システムテナントのレコードを削除できるようにしました。しかし、システムテナントのレコードでもアプリケーション辞書関連のテーブルのレコードは削除できません。

実行前に必ずデータベースのバックアップを取得して下さい。

 “クライアントの初期化と削除”プロセスを実行し、データが削除されると元に戻す事はできませんので、実行前に必ずデータベースのバックアップを取得して下さい。

システムクライアント以外の更新ログとセッション情報は削除されます。

 “カスタム削除”以外の方法で、“クライアントの初期化と削除”プロセスを実行すると、システムクライアント以外の更新ログ(AD_ChangeLogテーブルの情報)とセッション情報(AD_Session)は、”削除プロファイル”の"削除定義"に関わらず全て削除されます。

インポートテーブルとテンポラリーテーブルのデータは削除されます。

 “カスタム削除”以外の方法で、“クライアントの初期化と削除”プロセスを実行すると、接頭辞が”I_”で始まるインポートテーブルと、”T_”で始まるテンポラリーテーブルのデータは、”削除プロファイル”の“削除定義”に関わらず全て削除されます。

実行できるクライアントとユーザー。

 “クライアントの初期化と削除”プロセスを実行できるクライアントはシステムクライアントだけです。そしてSuper Userでは実行できません。Systemユーザーか、それ以外のユーザーでシステムクライアントにログインし、実行して下さい。

よくあるエラー

◆外部参照制約エラー

 “クライアントの初期化と削除”プロセスでは、はじめに外部参照制約を無効にして、最後に外部参照制約を有効に戻して終了します。その外部参照制約を有効に戻す際にエラーになる事があります。これは、”削除プロファイル”に外部参照制約の違反になるような削除定義がされているか、もともとデータになんらかの矛盾がある事が考えられます。エラーが発生した場合は、ログを参照して原因を確認して下さい。

◆Not Null制約エラー

 Not Null制約があるカラムにNullを代入しようとしてエラーになる事があります。”削除プロファイル”の削除定義が、Not Null制約に違反していないかどうか確認して下さい。

 

 

 

クライアントの初期化と削除プロセス

実行画面

◆クライアントID

 初期化もしくは削除するクライアントのIDを入力して下さい。

◆クライアントの初期化と削除

 初期化もしくは削除する処理を選択します。次の5つの処理から選択できます。

  • クライアント削除…選択したクライアントの全てのデータを削除します。
  • クライアントのトランザクション削除…選択したクライアントのトランザクションデータのみ削除します。
  • 全クライアントのトランザクション削除…全てのクライアントのトランザクションデータを削除します。これを選択する場合は、クライアントIDの値は0を入力して下さい。
  • クライアントの初期化…”削除プロファイル”の"削除定義"に従って、クライアントを初期化します。
  • カスタム削除…”削除プロファイル”の"削除定義"に従ってデータを削除します。

◆Truncate

 クライアントの初期化と削除で、”全クライアントのトランザクション削除”を選択した際に表示されます。TruncateフラグをONにすると、トランザクションテーブルに対してSQLの”Truncate”を使用してデータを削除します。OFFにするとSQLの”Delete”を使用してデータを削除します。

◆削除プロファイル

 “クライアントの削除”以外で表示されるフィールドです。 選択した”クライアントの初期化と削除”フィールドの値に対応した”削除プロファイル”を選択する事ができます。

◆更新が0件のSQLのログを取得する

 “クライアントの初期化と削除”プロセスでは、1件以上のレコードを削除したり更新したSQLはすべてログとして記録しています。この”更新が0件のSQLのログを取得する”フラグをONにすると、削除したり更新したレコードが無かった場合でも、 “クライアントの初期化と削除”プロセスが発行したレコードの更新に係るSQLをすべてログとして記録します。

 

プロセス実行画面のパラメータチェック

◆ユーザーのチェック

 Super Userでは、クライアントの初期化と削除プロセスは実行できません。

◆クライアントIDのチェック

 “クライアント削除”、”クライアントのトランザクション削除”、”クライアントの初期化”、”カスタム削除”の4つの方法ではクライアントのIDは”0”以外で、実在するクライアントのIDを入力する必要があります。

 “全クライアントのトランザクション削除”は、クライアントIDは”0”にする必要があります。

◆削除プロファイルのチェック

 ”クライアントのトランザクション削除”、 “全クライアントのトランザクション削除”、”クライアントの初期化”、”カスタム削除”の4つの方法では削除プロファイルを入力する事ができます。 ”クライアントのトランザクション削除”、 “全クライアントのトランザクション削除”の2つは、削除プロファイルの入力は任意です。”クライアントの初期化”、”カスタム削除”の2つは削除プロファイルの入力は必須です。  

 

"クライアント削除"の処理概要

 選択したクライアントの全てのデータを削除します。削除プロファイルによる処理のカスタマイズはできません。

◆"トランザクションテーブル"のデータの削除

 クライアントの削除では、まずはじめに”トランザクションテーブル”のデータが削除されます。

◆"トランザクションテーブル"以外のテーブルのデータの削除

 トランザクションテーブルのデータが削除された後で、トランザクションテーブル以外のテーブルのデータが削除されます。

◆削除するクライアントを参照しているレコードの削除

 削除するクライアントを参照しているレコードを全て削除します。

◆主キーのIDカウントのリセット

 主キーのIDカウントをリセットします。 次のテーブルは主キーのIDカウントのリセット対象にはなりません。

  • "AD_"からはじまるテーブル。
  • 現在のIDのカウントが1000000より少ないテーブルです。

 

"カスタム削除"の処理概要

 選択した”削除プロファイル”の”削除定義”に従って削除処理が実行されます。処理はシーケンス番号順に実行されます。カスタム削除では、削除処理を自由に定義する事ができますが、その反面、データの整合性やデータベースの制約を意識して削除プロファイルを作成する必要があります。上級者向けの方法です。

 

 “クライアントのトランザクションデータ削除”では、選択したクライアントのトランザクションデータを削除します。

◆トランザクションテーブルのデータの削除

 まずはじめに”トランザクションテーブル”のデータが削除されます。トランザクションテーブルはクライアントの初期化と削除プロセスで予め定義されており、”削除テーブルの確認レポート”で確認できます。  “削除プロファイル”の削除定義にトランザクションテーブルが含まれている場合、そのトランザクションテーブルはここでは削除されませんので注意して下さい。言い換えると、トランザクションテーブルに定義されているテーブルでも、”削除プロファイル”の”削除定義”に追加する事で、あえて削除させないようにする事ができます。

◆トランザクションテーブルのデータを参照しているカラムにNullを代入する

 トランザクションテーブルのデータを参照しているカラムにNullを設定します。そのカラムが必須入力になっていて、Nullを設定する事ができない場合は、そのレコードごと削除します。

◆伝票番号の初期化

 伝票番号を初期化します。

◆削除プロファイルの処理

 削除プロファイルが選択されている場合、削除プロファイルの削除定義がシーケンス番号順に実行されます。

◆主キーのIDカウントのリセット

 主キーのIDカウントをリセットします。対象となるテーブルはトランザクションテーブルとカスタム削除プロファイルに定義されているテーブルです。対象となっているテーブルでも次のテーブルは対象外になります。

  • "AD_"からはじまるテーブル。
  • 現在のIDのカウントが1000000より少ないテーブルです。

 

 “全クライアントのトランザクションデータ削除”では、削除対象となるトランザクションテーブルのデータがすべてのクライアントになる事以外は、基本的に”クライアントのトランザクション削除”と同じ処理になります。

  “全クライアントのトランザクションデータ削除”では、”TRUNCATE”のフラグをONにする事で、SQLの”DELETE”ではなく”TRUNCTE”を使用して処理する事ができます。”TRUNCATE”は”CASCADE”オプションを付加して実行されますので、注意して下さい

 TRUNCATEでは、削除プロファイルに削除定義されているWHERE句の条件は無視されて、削除定義されているテーブルをすべてTRUNCATEしますので注意して下さい

 

 “クライアントの初期化”では、トランザクションデータとマスタデータを削除する事ができます。トランザクションデータは基本的に全て削除されます。マスタデータは”削除プロファイル”の”削除定義”に従って削除されます。

◆トランザクションテーブルのデータの削除

 まずはじめに”トランザクションテーブル”のデータが削除されます。トランザクションテーブルはクライアントの初期化と削除プロセスで予め定義されており、”削除テーブルの確認レポート”で確認できます。

 “削除プロファイル”の削除定義にトランザクションテーブルが含まれている場合、そのトランザクションテーブルはここでは削除されませんので注意して下さい。言い換えると、トランザクションテーブルに定義されているテーブルでも、”削除プロファイル”の”削除定義”に追加する事で、あえて削除させないようにする事ができます。

◆トランザクションテーブルのデータを参照しているカラムにNullを代入する

 トランザクションテーブルのデータを参照しているカラムにNullを設定します。そのカラムが必須入力になっていて、Nullを設定する事ができない場合は、そのレコードごと削除します。

◆伝票番号の初期化

 伝票番号を初期化します。

◆初期化テーブル以外のテーブルのデータの削除

 初期化テーブルではないテーブルでかつ削除プロファイルにも削除定義がされていないテーブルのデータは全て削除されます。”初期化テーブル”はクライアントの初期化と削除プロセスで定義されており、”削除テーブルの確認レポート”で確認できます。ここで削除されたテーブルを参照しているカラムにはNullが代入されます。

◆削除プロファイルの処理

 削除プロファイルが選択されている場合、削除プロファイルに削除定義が、“組織マスタ”、”職責”、””ユーザー”、取引先マスタ“、”品目マスタ”の順番に処理されます。そしてその後カスタム削除プロファイルの削除定義がシーケンス番号順に実行されます。

◆主キーのIDカウントのリセット

 主キーのIDカウントをリセットします。次のテーブルは主キーのIDカウントのリセット対象にはなりません。

  • "AD_"からはじまるテーブル。
  • 現在のIDのカウントが1000000より少ないテーブルです。

 

 

 

削除プロファイル

 削除プロフィルに削除定義をする事により、クライアントの初期化と削除のプロセスを柔軟にカスタマイズできます。

削除プロファイルタブ

削除プロファイルウィンドウの削除プロファイルタブ
削除プロファイルウィンドウの削除プロファイルタブ

◆クライアントの初期化と削除

 初期化もしくは削除する処理を選択します。次の4つの処理から選択できます。

  • クライアントのトランザクション削除…選択したクライアントのトランザクションデータのみ削除します。
  • 全クライアントのトランザクション削除…全てのクライアントのトランザクションデータを削除します。これを選択する場合は、クライアントIDの値は0を入力して下さい。
  • クライアントの初期化…”削除プロファイル”の”削除定義”に従って、クライアントを初期化します。
  • カスタム削除…”削除プロファイル”の”削除定義”に従ってデータを削除します

※”クライアント削除”では、削除プロファイルは作成できません。

◆クライアント名の修正

 “クライアントの初期化”を選択した際に表示されるフィールドで、初期化するクライアントのクライアント名をこのフィールドの値に変更する事ができます。

◆組織-WHERE句

  • “クライアントの初期化”の初期化を選択した際に、表示されるフィールドです。
  • ここで設定したWHERE句に該当する組織マスタ以外の組織マスタが削除されます。
  • 組織マスタは”*(AD_Org_ID=0)”はシステムクライアントのデータなので削除する事はできません。
  • 削除された組織マスタを参照しているデータは、すべてのテーブルから削除されます。
  • このフィールドを空白にした場合、組織マスタは削除されません。

◆職責-WHERE句

  • “クライアントの初期化”を選択した際に、表示されるフィールドです。
  • ここで設定したWHERE句に該当する職責以外の職責が削除されます。
  • このフィールドを空白にした場合、職責は削除されません。

◆ユーザー-WHERE句

  • “クライアントの初期化”を選択した際に、表示されるフィールドです。
  • ここで設定したWHERE句に該当するユーザー以外のユーザーが削除されます。
  • このフィールドを空白にした場合、ユーザーは削除されません。
  • ユーザーマスタが1つでも削除される場合、そのクライアントのすべてのテーブルのすべてのレコードの作成者(CreatedBy)と更新者(UpdatecBy)がSuper user(AD_User_ID=100)に置き換わります。

◆取引先-WHERE句

  • “クライアントの初期化”を選択した際に、表示されるフィールドです。
  • ここで設定したWHERE句に該当する取引先マスタ以外の取引先マスタが削除されます。
  • このフィールドを空白にした場合、取引先マスタは削除されません。

◆品目マスタ-WHERE句

  • “クライアントの初期化”を選択して際に、表示されるフィールドです。
  • ここで設定したWHERE句に該当する品目マスタ以外の品目マスタが削除されます。
  • このフィールドを空白にした場合、品目マスタは削除されません。

 

カスタム削除プロファイルタブ

 “カスタム削除プロファイル”タブでは、削除するテーブルとそのテーブルのレコードの削除条件を柔軟に定義する事ができます。

 そして"外部キーの取扱い"を設定する事で、削除するテーブルを参照しているレコードに対する処理の方針を定義する事ができます。

削除プロファイルウィンドウのカスタム削除プロファイルタブ
削除プロファイルウィンドウのカスタム削除プロファイルタブ

◆シーケンスNo

 カスタム削除プロファイルは、このシーケンスの小さいに順に実行されます。

◆テーブル

 データを削除するテーブルを選択します。

◆使用されていないデータを削除

 使用されていないデータを削除フラグをONにすると、他のテーブルから参照されていないレコードを削除します。使用されていないデータを削除フラグがONの場合、WHERE句フィールドに入力されている条件と追加プロファイル明細は無視されます。

【注意】使用されていないデータかどうかの判定

使用されていないデータがどうかの判定は、テーブルの主キー(TableName_ID)と同じカラム名で参照しているテーブルか、”Table Direct”か”Table”,”Search”のいずれかのリファレンスでテーブルに参照しているテーブルのデータに対して行います。つまり、次のリファレンスを使用して、テーブルのデータを参照している場合は、使用されていないものとし削除対象となりますので注意して下さい。

ID / Location / Locator / Account / Assignment / PAttribute / Image / Chart / Color

◆SQL WHERE句

  • ここで設定したWHERE句に該当するレコード以外が削除されます。
  • 使用されていないデータを削除するフラグがONの場合は、このフィールドは表示されません。
  • このSQL WHERE句フィールドを空白にした場合、そのテーブルのデータは削除されません

◆外部キーの取扱い

 削除するレコードが、他のテーブルのレコードから参照されている場合、その外部参照キーに対する処理の方針を選択します。ここで選択された方針は、”カスタム削除プロファイル明細”で設定されているテーブル以外の参照テーブルのレコードに対して適用されます

  • NULLをセット
  • 値をセット。
  • レコードの削除。
  • 必須は削除。非必須はNULLをセット。
  • 必須は削除。非必須は値をセット。
  • 必須は値をセット。非必須はNULLをセット。
  • 必須は値をセット。非必須は削除。

◆値

 外部キーの取り扱いで値をセットする場合、その値を入力します。

カスタム削除プロファイル明細の作成プロセス

 カスタム削除プロファイルタブのプロセスアイコンにはカスタム削除プロファイル明細の作成プロセスが割り当たっています。カスタム削除プロファイル明細の作成プロセスを実行すると、カスタム削除プロファイルタブで設定したテーブルを参照しているテーブルを洗い出して、カスタム削除プロファイル明細を自動作成します。

【注意】洗い出せるデータとカラム

  • このプロセスで洗い出せる参照しているテーブルとそのカラムは、参照しているテーブルの主キーと同じ名称のカラムか、”Table Direct”、”Table”、“Search”のいずれかのリファレンスで参照している場合です。
  • このプロセスは、既にカスタム削除プロファイル明細が作成されている場合は、実行できません。

 

 

カスタム削除プロファイル明細タブ

 “カスタム削除プロファイル”タブで、選択した”外部キーの取扱い”に沿わない処理を施したいテーブルがある場合、その取扱いを”カスタム削除プロファイル明細”タブで定義する事ができます。

削除プロファイルウィンドウのカスタム削除プロファイル明細タブ
削除プロファイルウィンドウのカスタム削除プロファイル明細タブ

◆シーケンスNo

 カスタム削除プロファイル明細は、このシーケンスの小さいに順に実行されます。

◆テーブル

 カスタム削除プロファイルタブに定義しているテーブルを参照しているテーブルを入力します。

◆リンクカラム

 カスタム削除プロファイルタブに定義しているテーブルを参照しているカラムを入力します。

◆外部キーの取扱い

 リンクカラムに設定されているカラムが参照しているレコードが削除される場合に、どのような処理を行うか次のリストより選択します。

  • NULLをセット
  • 値をセット。
  • 削除。

◆値

 外部キーの取り扱いで”値をセット”する場合、その値を入力します。

 

 

 

クライアントの初期化と削除の確認用レポート

“クライアントの初期化と削除“プロセスの対象となっているテーブルや、そのテーブルの関係を確認するためのレポートを用意しています。

  • 削除テーブルの確認レポート
  • テーブル関係の確認レポート。

削除テーブルの確認レポート

 削除テーブルの確認レポートでは、削除プロファイル毎に削除対象となっているテーブルの一覧を表示します。

◆レポート実行画面

◆レポート画面(Excel)

説明欄に、どのような種類のテーブルか、そしてクライアントの初期化と削除プロセスでどのように処理されるか記載されています。

 

テーブル関係の確認レポート

テーブル関係の確認レポートでは、選択したテーブルのレコードを参照しているテーブルとそのカラムを一覧表示します。

【注意】一覧表示されないテーブルについて

次のリファレンスを使用して、テーブルのデータを参照している場合は、このレポートでは一覧表示できませんので注意して下さい。

ID / Location / Locator / Account / Assignment / PAttribute / Image / Chart / Color

◆レポート実行画面

◆レポート画面(Excel)

 レポート実行画面でしたテーブルを参照しているテーブルとカラムの一覧が表示されます。削除プロファイルの削除定義を作成するのに必要となる情報が表示されます。

 

更新履歴

2024年12月3日(ver11): 

連結経営管理のプラグインを開発するにあたり、カスタム削除の場合にのみ、システムテナントのレコードを削除できるようにしました。しかし、システムテナントのレコードでもアプリケーション辞書関連のテーブルのレコードは削除できません。

2024年5月17日(ver11): RDS対応

RDSで管理者権限が無いために外部参照制約を無効にする処理でエラーになるのを回避するために外部参照制約を無効にする処理を行わないようにするシステムコンフィグ設定JP_EXECUTE_UPDATE_CONSTRAINTを追加。

2022年3月23日(ver9): 削除テーブルの確認レポートの不具合修正

削除テーブルの確認レポートで[全テーブルを表示する]にするとレポートが表示されない不具合を修正しました。

2021年8月20日(ver8)

クライアント名を変更する時にImmutableエラーになっていたのを修正しました。