このトピックでは、MySQL データベースから OceanBase Database の MySQL テナントへのデータ移行中に、制約とインデックスに対する ALTER TABLE DDL 操作のサポートされている変換範囲について説明します。
構文
alter_option: {
ADD {INDEX | KEY} [index_name]
[index_type] (key_part,...) [index_option] ...
| ADD {FULLTEXT | SPATIAL} [INDEX | KEY] [index_name]
(key_part,...) [index_option] ...
| ADD [CONSTRAINT [symbol]] PRIMARY KEY
[index_type] (key_part,...)
[index_option] ...
| ADD [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY]
[index_name] [index_type] (key_part,...)
[index_option] ...
| ADD [CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (col_name,...)
reference_definition
| ADD [CONSTRAINT [symbol]] CHECK (expr) [[NOT] ENFORCED]
| DROP {CHECK | CONSTRAINT} symbol
| ALTER {CHECK | CONSTRAINT} symbol [NOT] ENFORCED
| ALTER INDEX index_name {VISIBLE | INVISIBLE}
| {DISABLE | ENABLE} KEYS
| DROP {INDEX | KEY} index_name
| DROP PRIMARY KEY
| DROP FOREIGN KEY fk_symbol
| RENAME {INDEX | KEY} old_index_name TO new_index_name
}
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}
}
サポートされている操作
ADD INDEX | KEYを使用して通常のインデックスを作成します。DROP INDEXを使用してインデックスを削除します。ADD FULLTEXT INDEX | KEYを使用してフルテキストインデックスを作成します。ADD UNIQUE INDEX | KEYを使用して一意なインデックスを作成します。ADD FOREIGN KEYを使用して外部キーを作成します。DROP PRIMARY KEYを使用して主キー制約を削除します。重要OceanBase Database V4.0.0 以降のバージョンのみがこの操作をサポートしています。
サポートされていない操作
同期される DDL 文に以下のサポートされていない定義が含まれている場合、変換は失敗し、出力は空の文字列になります。
UNIQUE KEY、INDEX/KEY、および FULLTEXT INDEX の列に関数ベースのインデックスを作成します。これらのインデックスはフィールドにのみ作成できます。
ADD SPATIAL INDEXを使用します。ADD PRIMARY KEYを使用します。ALTER TABLE DISABLE | ENABLE KEYSを使用します。FOREIGN KEY列にON [DELETE | UPDATE] SET NULLキーワードを指定します。V3.2.3 より前のバージョンの OceanBase Database の MySQL テナントでは、以下の操作を実行できません。
ADD CHECKを使用します。DROP CHECKを使用します。ALTER CHECK [NOT] ENFORCEDを使用します。ALTER INDEX VISIBLE | INVISIBLEを使用します。RENAME INDEX | KEYを使用します。ALTER TABLE t rename KEY k TO kk; ALTER TABLE T RENAME INDEX b TO w;
無視される句とオプション
同期される DDL 文で指定された場合、以下の句とオプションは無視され、解決または変換されません。
USING BTREEまたはUSING HASHindex_option内のKEY_BLOCK_SIZE、index_type、WITH PARSER、COMMENT、VISIBLE | INVISIBLE、ENGINE_ATTRIBUTE、またはSECONDARY_ENGINE_ATTRIBUTECHECK 制約の
[NOT] ENFORCEDMATCH 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 制約で特定の関数または式を指定することをサポートしていません。