CREATE_RULE プロシージャは、カスタムリライトルールを作成するために使用されます。
機能の適用範囲
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
構文
PROCEDURE CREATE_RULE (
rule_name IN VARCHAR,
pattern IN CLOB,
replacement IN CLOB,
enabled IN VARCHAR := 'YES'
);
パラメータ説明
パラメータ |
説明 |
|---|---|
| rule_name | ルール名。 |
| rule_owner_name | データベース名。MySQLモードでのみ指定が必要です。 |
| pattern | ルールがマッチするステートメントのテンプレート。 |
| replacement | pattern と一致するステートメントを書き換える方法を指示するテンプレート。 |
| enabled | ルールが有効かどうか。 |
使用方法
リライトバインドルールの制限事項は以下のとおりです:
- サポートされているSQL文の種類は、
SELECT、INSERT、REPLACE、UPDATE、DELETE、MERGE、SETです。 - 定義されたルールテンプレート内で「?」と「:{name}」を混在させることはできません。
patternの定義で「:{name}」をパラメータマーカーとして使用する場合、nameは重複してはなりません。patternとreplacementは空に定義することはできません。patternとreplacementはMulti Queryをサポートしません。rule_nameはテナントレベルで一意である必要があります。- ルールテンプレート内の
patternとreplacementのパラメータマーカーの数は同じでなければなりません。 - ルールテンプレート内の
patternとreplacementのパラメータ表現方法は同じでなければなりません(どちらも「?」で表すか、どちらも「:{name}」で表す)。
例
obclient> CALL DBMS_UDR.CREATE_RULE('rule1', 'select ? from dual','select ? + 1 from dual');
Query OK, 0 rows affected
obclient> SELECT 1 FROM DUAL;
+-----+
| ?+1 |
+-----+
| 2 |
+-----+
1 row in set