UPDATE UDFによって、UPDATE操作に対するセキュリティ ポリシーを実装します。UPDATE UDFのパラメータ リストは、次の内容で構成されます。
- 入力パラメータ。このパラメータは、引数として現行セッションのセキュリティ ラベルを受け取ります。
- 入力パラメータ。このパラメータは、引数として対象行のセキュリティ ラベルを受け取ります。
- 結果パラメータ。UPDATEリクエストがセキュリティ ポリシーを満たしている場合は、現行セッションのセキュリティ ラベルを返し、それ以外の場合は0を返します。有効な戻り値についての詳細は、INSERT UDFまたはUPDATE UDFの戻り値を参照してください。戻り値のデータ型は、制約オブジェクトの定義で指定した型と同じにする必要があります。
- 入力パラメータ用と結果パラメータ用の識別子パラメータ。これらのパラメータは、制約オブジェクトがNULLを許容する場合にのみ必要になります。
ここでは、UPDATE UDFの宣言方法の例を示します。
/***** C source file name: updatelevel.c *****/ #define SQL_TEXT Latin_Text #include <sqltypes_td.h> void UpdateLevel( short int *sess_level, short int *curr_row, short int *upd_row ) { ... }
対応するCREATE FUNCTION文は、以下のようになります。
CREATE FUNCTION SYSLIB.UpdateLevel( current_session SMALLINT, input_row SMALLINT ) RETURNS SMALLINT LANGUAGE C NO SQL PARAMETER STYLE TD_GENERAL EXTERNAL NAME 'CS!updatelevel!cctests/updatelevel.c';
条件
- Current_sessionは、セッションに現在設定されているセキュリティ ラベルを特定する、システム定義のパラメータ名です。
- Input_rowは、システム定義のパラメータ名です。このパラメータで対象行のセキュリティ ラベルを特定します。
- RETURNS data_typeは、制約オブジェクトの定義で指定したデータ型と同じになります。
- 制約オブジェクトがNULLを許容する場合、PARAMETER STYLEはSQLになります。それ以外の場合、PARAMETER STYLEはTD_GENERALになります。