4.1 注釈(NO)UPDATE、(NO)INSERT、(NO)DELETEによる更新操作の許可/禁止

キーワードUPDATEは、注釈付きデータを更新できることを意味します。キーワードINSERTおよびDELETEは、注釈で対応されたフィールド/列をそれぞれ挿入または削除できることを意味します。

二面性ビューのデータで、様々な更新操作(挿入、削除、更新)を許可できます。表および列の注釈を使用して、ビューの作成時に許可される操作を指定します。許可される操作は、次のように、ルート表と他の表またはその列の注釈に基づいています。

  • 二面性ビューのデータは、ルート表にキーワードINSERTまたはDELETEで注釈付けされている場合、挿入可能または更新可能です。

  • 二面性ビューは、定義で使用されている表または列にキーワードUPDATEの注釈が付けられている場合、更新可能です。

デフォルトでは、二面性ビューは読取り専用です。二面性ビューの定義に使用される表データはビューから変更できません。これは、デフォルトで、二面性ビュー自体のデータが挿入可能、削除可能、更新可能でないことを意味します。したがって、キーワードNOUPDATENOINSERTおよびNODELETEは、二面性ビューを定義するすべてのFROM句にデフォルトで関連しています。

特定のFROM句のレベルの更新可能性を指定するには、キーワードWITHに続けて、(NO)UPDATE、(NO)INSERTおよび(NO)DELETEの1つ以上のキーワードを指定します。表レベルの更新性は、同じFROM句によって制御されるすべての列のうち、列レベル(NO)UPDATE注釈を上書きするものをを除く列を定義します。(列レベルが表レベルよりも優先されます。)

二面性ビューのレベルの部分(JSONドキュメント・フィールドに対応)が更新可能であることを指定するには、フィールド列(キー値)の指定後に注釈WITHを使用し、その後にキーワードUPDATEまたはNOUPDATEを付けます。たとえば、'name' : r.name WITH UPDATEは、table rNOUPDATEを指定して宣言されている場合でも、フィールドnameおよび列r.nameが更新可能であることを指定します。

ただし、識別列は、注釈に関係なく、常に読取り専用です。表レベルの注釈は識別列には影響せず、UPDATE注釈を識別列に適用するとエラーが発生します。

ノート:

NOCHECKNOUPDATEの両方の注釈が付けられた列を更新しようとすると、エラーは発生せず、更新リクエストは単に無視されます。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のすべてのフィールド/列(ドライバ・フィールド_idnameおよびpoints)は、挿入、更新および削除できます(WITH INSERT UPDATE DELETE)。

二面性ビューdriver_dvおよびteam_dvでは、表レベルの更新可能性の注釈のみがあります(列レベルの注釈はありません)。ただし、ビューrace_dvでは、フィールドlaps (表raceの列laps)に注釈WITH NOUPDATEがあり、表raceの列に対する表レベルの更新許可をオーバーライドします。特定のレースに定義されたラップ数は変更できません。