2021年2月19日金曜日

ページの読取り専用の働きについて

 Oracle APEXのアプリケーションを読取り専用にしたい、との質問があって「何かスイッチがあって、ポンとONにしたらできる、というものはないだろう。」と思っていたら、ページのプロパティの読取り専用を設定すればよい、と伺いました。

初めて聞いたので確認してみました。

結論としては、ページの読取り専用の設定は、ページ・アイテムを一括で読取り専用にする設定であり、プロセスの実行を妨げる(行の自動処理 - 表への挿入/更新/削除)ものではありませんでした。

以下、確認のために行った作業を記録します。

サンプルでよく使われるEMP/DEPT表の、EMP表を編集するフォームのページを読取り専用にします。

読取り専用のプロパティを常時にしていますが、色々な条件に基づいて読取り専用にすることができます。

アプリケーションを実行して、効果を確認します。従業員を選んで、フォームを開きます。

開かれたフォームのページが読取り専用になっています。入力フィールドの変更ができなくなっていることが確認できます。削除のボタンをクリックしてみます。


OKをクリックします。


部下を持っている従業員であれば、整合性制約のエラー(0RA-2292)が発生することもありますが、従業員は削除されます。

スクリーンショットでは従業員ADAMSを削除しました。以下の画面からADAMSは削除されています。作成をクリックします。


ページ・アイテムは読取り専用なので、すべて入力できません。何も入力せず、作成をクリックします。


空白行が追加されています。


ページ・アイテムの変更はできませんが、変更の適用をクリックしたときも、同じ値で表のアップデートは実行されるでしょう。表に監査列が追加されていて、トリガーによって更新をしている場合は、監査列の情報が更新されるはずです。

以上です。

Oracle APEXのアプリケーション開発の一助になれば幸いです。