3.3.11 改竄防止表
重要なデータを人為的ミスや不正な改竄から守るため,表の所有者も含め,すべてのユーザに対して表データの更新を禁止した改竄防止表を定義できるようにしました。改竄防止表に対する操作の実行可否を次の表に示します。
操作 |
改竄防止表 |
|
---|---|---|
行削除禁止期間指定あり |
行削除禁止期間指定なし |
|
挿入(INSERT) |
○ |
○ |
検索(SELECT) |
○ |
○ |
列単位の更新(UPDATE) |
○※1 |
○※1 |
行単位の更新(UPDATE) |
× |
× |
削除(DELETE) |
○※2 |
× |
全行削除(PURGE TABLE) |
× |
× |
上記以外の操作系SQL |
○ |
○ |
- (凡例)
-
○:実行できます。
×:実行できません。
- 注※1
-
更新可能列だけ更新できます。
- 注※2
-
行削除禁止期間を経過しているデータだけ削除できます。行削除禁止期間を指定しないと,表データを削除できません。
(1) 指定方法
定義系SQLのCREATE TABLEでINSERT ONLYオプション(改竄防止オプション)を指定します。また,ALTER TABLEのINSERT ONLYオプションを指定して,既存の表を改竄防止表に定義変更することもできます。
表定義時又は定義変更時に次の列を定義できます。
-
更新可能列を定義すると,列単位に,次の方法でデータを更新できます。
-
常に更新できる(UPDATEを指定)
-
ナル値から非ナル値へ一度だけ更新できる(UPDATE ONLY FROM NULLを指定)
更新可能列を定義できるのは,次の時点です。
-
CREATE TABLE実行時
-
ALTER TABLE CHANGE INSERT ONLY実行前
-
ALTER TABLE ADD 列名,又はALTER TABLE CHANGE 列名※ 実行時
- 注※
-
ALTER TABLE CHANGE 列名は,改竄防止表に対しては実行できません。
-
-
挿入履歴保持列を定義すると,行削除禁止期間を指定できます。行削除禁止期間を省略すると,表データは一切削除できません。また,表にデータがあるとDROP TABLEが実行できないため,行削除禁止期間を省略した場合,表及び表データは共に削除できません。そのため,データの保存期間が決まっている場合,又は決められる場合は行削除禁止期間を指定してください。
(2) 制限事項
改竄防止表及び改竄防止表格納RDエリアに対する制限事項を次に示します。詳細は,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。
-
すべての列に更新可能列属性を指定し,かつ改竄防止オプションを指定することはできません。
-
既存の列を更新可能列に変更したり,更新可能列を通常の列に変更したりすることはできません。
-
更新可能列は,改竄防止機能を適用する前に定義しておく必要があります。
-
既存の表を改竄防止表に変更する場合,データが存在する表に対して改竄防止機能は適用できません。まず,既存の表のデータをアンロードして,改竄防止表に変更してからデータをロードする必要があります。
-
データがある改竄防止表は削除できません。行削除禁止期間を指定していない改竄防止表はデータが削除できないため,表も削除できません。
-
改竄防止表格納RDエリアに対して,データベース構成変更ユティリティ(pdmod)によるRDエリアの再初期化(initialize rdarea)はできません。
-
改竄防止表格納RDエリアにはインナレプリカ機能(UNIX版限定)を使用できません。また,インナレプリカ機能を使用しているRDエリアに格納されている表に,改竄防止機能は適用できません。
-
改竄防止表に対して,レプリケーション機能(HiRDB Dataextractor及びHiRDB Datareplicator)を使用してデータの複写,及び更新結果を反映しないでください。使用すると,反映元と反映先でデータの内容が不一致になったり,エラーになったりすることがあります。