このトピックでは、MySQL データベースから OceanBase Database の MySQL テナントへのデータ移行中に、インデックスまたは制約を作成するための CREATE TABLE DDL 操作のサポートされている変換範囲について説明します。
構文
create_definition: {
col_name column_definition
| {INDEX | KEY} [index_name] [index_type] (key_part,...)
[index_option] ...
| {FULLTEXT | SPATIAL} [INDEX | KEY] [index_name] (key_part,...)
[index_option] ...
| [CONSTRAINT [symbol]] PRIMARY KEY
[index_type] (key_part,...)
[index_option] ...
| [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY]
[index_name] [index_type] (key_part,...)
[index_option] ...
| [CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (col_name,...)
reference_definition
| check_constraint_definition
}
key_part: {col_name [(length)] | (expr)} [ASC | DESC]
index_type:
USING {BTREE | HASH}
index_option: {
KEY_BLOCK_SIZE [=] value
| index_type
| WITH PARSER parser_name
| COMMENT 'string'
| {VISIBLE | INVISIBLE}
|ENGINE_ATTRIBUTE [=] 'string'
|SECONDARY_ENGINE_ATTRIBUTE [=] 'string'
}
check_constraint_definition:
[CONSTRAINT [symbol]] CHECK (expr) [[NOT] ENFORCED]
reference_definition:
REFERENCES tbl_name (key_part,...)
[MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
[ON DELETE reference_option]
[ON UPDATE reference_option]
reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
サポートされる操作
プライマリキーを作成する。
ユニークキーを作成する。
インデックスまたはキーを作成する。
外部キーを作成する。
フィールド、関数、または式に外部キーを作成する。 ON [DELETE | UPDATE] RESTRICT | CASCADE | NO ACTION | SET DEFAULT オプションを指定する。
フルテキストインデックスを作成する。
OceanBase Database V3.2.3 以降の MySQL テナントで CHECK 制約を作成する。
プレフィックス付きインデックスを作成する。
ASC または DESC キーワードを指定する。
サポートされない操作
変換対象の ALTER TABLE DDL 文に以下のサポートされていない定義が含まれている場合、変換は失敗し、出力は空の文字列になります。
関数キー部分を持つ以下のタイプのインデックスを作成する: PRIMARY KEY、UNIQUE KEY、INDEX/KEY、および FULLTEXT INDEX。(これらのインデックスはフィールドにのみ作成できます。)
関数または式を含むプライマリキー、ユニークキー、インデックス、キー、またはフルテキストインデックスの定義。例:
CREATE TABLE functional_index_t1 (col1 INT, PRIMARY KEY (col1, (ABS(col1)))); CREATE TABLE functional_index_t1(x VARCHAR(30), INDEX idx ((CAST(x->>'$.name' AS CHAR(30)))));空間インデックスを作成する。
外部キーに ON [DELETE | UPDATE] SET NULL オプションを指定する。
無視される句とオプション
同期された DDL 文で指定された場合、以下の句とオプションは無視され、解決または変換されません。
USING BTREE または USING HASH
index_option の KEY_BLOCK_SIZE、index_type、WITH PARSER、COMMENT、VISIBLE | INVISIBLE、ENGINE_ATTRIBUTE、または SECONDARY_ENGINE_ATTRIBUTE
CHECK 制約の [NOT] ENFORCED
外部キーの MATCH FULL | MATCH PARTIAL | MATCH SIMPLE
制限事項
MySQL テナントの OceanBase Database の制限により、以下のシナリオで同期された DDL 文が MySQL テナントの OceanBase Database で変換および実行されるときにエラーが返される場合があります。
MySQL テナントの OceanBase Database は、特定タイプのフィールドに以下のタイプの制約を作成できません: PRIMARY KEY、UNIQUE KEY、INDEX/KEY、FULLTEXT INDEX、および FOREIGN KEY。
MySQL テナントの OceanBase Database は、CHECK 制約で特定の関数または式を指定することをサポートしていません。
MySQL テナントの OceanBase Database は、FOREIGN KEY 制約で特定の関数または式を指定することをサポートしていません。