4.1 注釈(NO)UPDATE、(NO)INSERT、(NO)DELETEによる更新操作の許可/禁止
キーワードUPDATE
は、注釈付きデータを更新できることを意味します。キーワードINSERT
およびDELETE
は、注釈で対応されたフィールド/列をそれぞれ挿入または削除できることを意味します。
二面性ビューのデータで、様々な更新操作(挿入、削除、更新)を許可できます。表および列の注釈を使用して、ビューの作成時に許可される操作を指定します。許可される操作は、次のように、ルート表と他の表またはその列の注釈に基づいています。
-
二面性ビューのデータは、ルート表にキーワード
INSERT
またはDELETE
で注釈付けされている場合、挿入可能または更新可能です。 -
二面性ビューは、定義で使用されている表または列にキーワード
UPDATE
の注釈が付けられている場合、更新可能です。
デフォルトでは、二面性ビューは読取り専用です。二面性ビューの定義に使用される表データはビューから変更できません。これは、デフォルトで、二面性ビュー自体のデータが挿入可能、削除可能、更新可能でないことを意味します。したがって、キーワードNOUPDATE
、NOINSERT
およびNODELETE
は、二面性ビューを定義するすべてのFROM
句にデフォルトで関連しています。
特定のFROM
句の表レベルの更新可能性を指定するには、キーワードWITH
に続けて、(NO
)UPDATE
、(NO
)INSERT
および(NO
)DELETE
の1つ以上のキーワードを指定します。表レベルの更新性は、同じFROM
句によって制御されるすべての列のうち、列レベル(NO
)UPDATE
注釈を上書きするものをを除く列を定義します。(列レベルが表レベルよりも優先されます。)
二面性ビューの列レベルの部分(JSONドキュメント・フィールドに対応)が更新可能であることを指定するには、フィールド列(キー値)の指定後に注釈WITH
を使用し、その後にキーワードUPDATE
またはNOUPDATE
を付けます。たとえば、'name' : r.name WITH UPDATE
は、table r
がNOUPDATE
を指定して宣言されている場合でも、フィールドname
および列r.name
が更新可能であることを指定します。
ただし、識別列は、注釈に関係なく、常に読取り専用です。表レベルの注釈は識別列には影響せず、UPDATE
注釈を識別列に適用するとエラーが発生します。
ノート:
NOCHECK
とNOUPDATE
の両方の注釈が付けられた列を更新しようとすると、エラーは発生せず、更新リクエストは単に無視されます。This is to prevent interfering with possible concurrency.
更新可能性の注釈は、例3-2および例3-3で次のように使用されます:
-
表
team
のフィールド/列(チーム・フィールド_id
およびname
)は挿入、削除または更新できません(WITH NOINSERT NOUPDATE NODELETE
)。したがって、同様に、表race
のフィールド/列(レース・フィールド_id
およびname
)の場合は、raceInfo
も挿入、削除または更新できません。 -
マッピング表
driver_race_map
のすべてのフィールド/列(フィールド_id
およびfinalPosition
)は挿入および更新できますが、削除できません(WITH INSERT UPDATE NODELETE
)。 -
表
driver
のすべてのフィールド/列(ドライバ・フィールド_id
、name
およびpoints
)は、挿入、更新および削除できます(WITH INSERT UPDATE DELETE
)。
二面性ビューdriver_dv
およびteam_dv
では、表レベルの更新可能性の注釈のみがあります(列レベルの注釈はありません)。ただし、ビューrace_dv
では、フィールドlaps
(表race
の列laps
)に注釈WITH NOUPDATE
があり、表race
の列に対する表レベルの更新許可をオーバーライドします。特定のレースに定義されたラップ数は変更できません。
親トピック: 更新可能なJSONリレーショナル二面性ビュー