Logo
防篡改表转换

语法清单 #

语法描述类型
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

参数说明

参数解释 #

名称数据类型说明
ruleNameIDENTIFIER规则名称
digestColumnNameIDENTIFIER摘要列名称
dataTypeSTRING摘要列类型
columnNameIDENTIFIER参与计算的列名称
algorithmTypeNameSTRING摘要算法名称
skipDDLBOOLEAN是否跳过 DDL 执行
startJobBOOLEAN是否启动摘要值生成任务

示例

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

参数说明

参数解释 #

名称数据类型说明
ruleNameIDENTIFIER规则名称
digestColumnNameIDENTIFIER摘要列名称
dataTypeSTRING摘要列类型
columnNameIDENTIFIER参与计算的列名称
algorithmTypeNameSTRING摘要算法名称
skipDDLBOOLEAN是否跳过 DDL 执行
startJobBOOLEAN是否启动摘要值生成任务

示例

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

参数说明

参数解释 #

名称数据类型说明
ruleNameIDENTIFIER规则名称
digestColumnNameIDENTIFIER摘要列名称
skipDDLBOOLEAN是否跳过 DDL 执行, 删除摘要列

示例

CONVERT TABLE `t_user` DROP DIGEST COLUMNS (`name_digest`, `id_digest`), SKIP_DDL=false;