语法清单 #
| 语法 | 描述 | 类型 |
|---|---|---|
| CONVERT TABLE ruleName BY DATA_INTEGRITY RULE | 为表添加防篡改规则和添加摘要列 | RAL |
| CONVERT TABLE ruleName ADD DIGEST COLUMNS | 指定防篡改规则添加摘要列配置和添加摘要列 | RAL |
| CONVERT TABLE ruleName DROP DIGEST COLUMNS | 指定防篡改规则删除摘要列配置和摘要列 | RAL |
1. 为表添加防篡改列和规则 #
convertDataIntegrityTable ::=
'CONVERT' 'TABLE' ruleName 'BY' 'DATA_INTEGRITY' 'RULE' '(' digesGroupsDefinition ')' (',' skipDDL)? (',' startJob)?
digesGroupsDefinition ::=
digesGroupDefinition (',' digesGroupDefinition)*
digesGroupDefinition ::=
'(' 'DIGEST_COLUMN' '=' digestColumnName ',' 'DATA_TYPE' '=' dataType ',' columnNames ',' algorithmDefinition ')'
columnNames ::=
'COLUMNS' '(' columnName (',' columnName)* ')'
ruleName ::=
identifier
digestColumnName ::=
identifier
columnName ::=
identifier
dataType ::=
string
skipDDL ::=
booleanLiterals
startJob ::=
booleanLiterals
booleanLiterals ::=
true | false
algorithmDefinition ::=
'TYPE' '(' 'NAME' '=' algorithmTypeName (',' propertiesDefinition)? ')'
algorithmTypeName ::=
string
propertiesDefinition ::=
'PROPERTIES' '(' key '=' value (',' key '=' value)* ')'
key ::=
string
value ::=
literal
参数说明
参数解释 #
| 名称 | 数据类型 | 说明 |
|---|---|---|
| ruleName | IDENTIFIER | 规则名称 |
| digestColumnName | IDENTIFIER | 摘要列名称 |
| dataType | STRING | 摘要列类型 |
| columnName | IDENTIFIER | 参与计算的列名称 |
| algorithmTypeName | STRING | 摘要算法名称 |
| skipDDL | BOOLEAN | 是否跳过 DDL 执行 |
| startJob | BOOLEAN | 是否启动摘要值生成任务 |
示例
CONVERT TABLE `t_user` BY DATA_INTEGRITY RULE (
(DIGEST_COLUMN=`name_digest`, DATA_TYPE='varchar(200)', COLUMNS(`name`, `address`), TYPE(NAME='MD5', PROPERTIES('salt'='123456'))),
(DIGEST_COLUMN=`password_digest`, DATA_TYPE='varchar(200)', COLUMNS(`name`, `password`), TYPE(NAME='MD5', PROPERTIES('salt'='123456')))
), SKIP_DDL=false, START_JOB=false;
2. 指定规则添加摘要列和规则 #
convertDataIntegrityTableAddDigestColumns ::=
'CONVERT' 'TABLE' ruleName 'ADD' 'DIGEST COLUMNS' digesGroupsDefinition (',' skipDDL)? (',' startJob)?
digesGroupsDefinition ::=
digesGroupDefinition (',' digesGroupDefinition)*
digesGroupDefinition ::=
'(' 'DIGEST_COLUMN' '=' digestColumnName ',' 'DATA_TYPE' '=' dataType ',' columnNames ',' algorithmDefinition ')'
columnNames ::=
'COLUMNS' '(' columnName (',' columnName)* ')'
ruleName ::=
identifier
digestColumnName ::=
identifier
columnName ::=
identifier
dataType ::=
string
skipDDL ::=
booleanLiterals
startJob ::=
booleanLiterals
booleanLiterals ::=
true | false
algorithmDefinition ::=
'TYPE' '(' 'NAME' '=' algorithmTypeName (',' propertiesDefinition)? ')'
algorithmTypeName ::=
string
propertiesDefinition ::=
'PROPERTIES' '(' key '=' value (',' key '=' value)* ')'
key ::=
string
value ::=
literal
参数说明
参数解释 #
| 名称 | 数据类型 | 说明 |
|---|---|---|
| ruleName | IDENTIFIER | 规则名称 |
| digestColumnName | IDENTIFIER | 摘要列名称 |
| dataType | STRING | 摘要列类型 |
| columnName | IDENTIFIER | 参与计算的列名称 |
| algorithmTypeName | STRING | 摘要算法名称 |
| skipDDL | BOOLEAN | 是否跳过 DDL 执行 |
| startJob | BOOLEAN | 是否启动摘要值生成任务 |
示例
CONVERT TABLE `t_user` ADD DIGEST COLUMNS (
(DIGEST_COLUMN=`address_digest`, DATA_TYPE='varchar(200)', COLUMNS(`name`,`address`), TYPE(NAME='MD5', PROPERTIES('salt'='123456')))
), SKIP_DDL=false, START_JOB=false;
3. 指定规则删除摘要列配置和摘要列 #
convertDataIntegrityTableDropDigestColumns ::=
'CONVERT' 'TABLE' ruleName 'DROP' 'DIGEST COLUMNS' '(' digestColumnName (',' digestColumnName)* ')' (',' skipDDL)?
ruleName ::=
identifier
digestColumnName ::=
identifier
skipDDL ::=
booleanLiterals
booleanLiterals ::=
true | false
参数说明
参数解释 #
| 名称 | 数据类型 | 说明 |
|---|---|---|
| ruleName | IDENTIFIER | 规则名称 |
| digestColumnName | IDENTIFIER | 摘要列名称 |
| skipDDL | BOOLEAN | 是否跳过 DDL 执行, 删除摘要列 |
示例
CONVERT TABLE `t_user` DROP DIGEST COLUMNS (`name_digest`, `id_digest`), SKIP_DDL=false;