4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FileMakerAdvent Calendar 2022

Day 15

【FileMaker】「全レコード削除」更新版

Last updated at Posted at 2022-12-19

この記事を書いている時点での FileMaker バージョンは、19.6.1ですが、以下の記事を書いたときは、日付からしておそらくバージョン13か14の2015年でした。

今回は、この記事のバージョンアップになります。

FileMakerでのレコード削除方法

ヘルプにもあるとおり、全レコードを表示してから対象レコードを削除するオーソドックスなやり方です。

2016年に発売されたバージョン15では、レコードの削除の方法として、新しく「テーブルデータを削除」が追加されました。

最初は何がどう違うのかわからなかったのですが、次のように整理できます。

同じところ

互換性も同じ

FileMaker 製品のサポートは、どちらも同じ互換性になっています。

製品 サポート
FileMaker Pro はい
FileMaker Go はい
FileMaker WebDirect はい
FileMaker Server 一部
FileMaker Cloud 一部
FileMaker Data API 一部
カスタム Web 公開 一部

引用: Claris Pro および FileMaker Pro ヘルプ

違うところ

レコードを削除した場合は元に戻すことはできません

「テーブルデータを削除」は、削除したデータは元に戻せません。
これは、バージョン19.6.1で導入されたトランザクション復帰を行なっても、削除したデータは元に戻せません。
(ロールバックされません)
「対象レコード削除」は、トランザクション復帰で戻せます。

トランザクションでの「テーブルデータを削除」でデータが復帰されない例を以下で見てみます。
スクリーンショット 2022-12-19 17.36.34.png

トランザクションでの「対象レコード削除」でデータが復帰する例を以下で見てみます。
スクリーンショット 2022-12-19 17.32.47.png

「テーブルデータを削除」の方が処理速度が速い

ということらしいです。
ただし、ヘルプによると「高速に処理できる場合がある」とありますので、絶対的に速いわけではないようです。

処理の違い

ヘルプを参考に、処理の違いを見ていきます。
汎用
◯:される、要
×:されない、不要

対象レコードを削除 テーブルデータを削除
関連レコードを含んだ削除 1 ×
[完全アクセス権]アクセス権セットが必要 ×
グローバルオブジェクトフィールドの内容削除 ×
ODBCデータソースの削除 × 2

思った以上に違いがあると思います。
その他、されるされない、要不要についてはClaris ジャパンのyoutubeやClaris Partnerさまのブログでもピックアップされていますので、検索してみてください。

関連レコードを含んだ削除については、思いもよらない関連データを削除してしまう可能性がありますので、「対象レコードを削除」を実装するときは、リレーションシップグラフの確認をしておいた方が無難です。
スクリーンショット 2022-12-19 16.39.55.png

その他の削除

FileMaker ODataテーブルの削除も全データ削除を実行する方法になります。
こちらも「テーブルデータを削除」と同様、1コマンドでテーブルのデータが跡形もなく(グローバルオブジェクトフィールドの内容も)消し去ってしまいますので、慎重な実装が必要です。

使い分け

「対象レコードを削除」「テーブルデータを削除」を見ていくと、どう使い分けをすればいいのかというところが気になると思います。
開発会社やプロジェクトによってルールはあると思いますが、私は次のように使い分けています。

対象レコードを削除

・一般的に絞り込んでデータを削除したいとき
・完全アクセス権ではなくカスタマイズしたアクセス権セットでの実行を考慮したいとき
・不用意に対象でないデータの削除を防ぎたいとき

テーブルデータを削除

・テンポラリ的な扱いをしているテーブルの初期化(ex.インポートデータをワンクッション置いて処理したデータを目的のテーブルにデータコピーしたい時など)
・完全アクセス権で運用時のメンテナンススクリプトを書いていて明らかにテーブルデータの一括削除をしたいとき
・大量のデータを削除したいとき

などです。
みなさんは、どのように使い分けてますか?

違いを理解して思わぬ落とし穴にハマらないようにしたいですね。(自戒)

  1. リレーションシップグラフのオプションで「他のレコードが削除された時、このテーブルの関連レコードを削除」にチェックされている場合

  2. ただしODBCデータソース先が FileMaker Pro ファイルであれば削除される

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?