本文为您介绍迁移 Oracle 数据库的数据至 OceanBase 数据库 Oracle 租户时,ALTER TABLE DDL 修改、删除和新增约束的支持转换范围。
总览
constraint_clauses:
{ ADD { { out_of_line_constraint }...
| out_of_line_REF_constraint
}
| MODIFY { CONSTRAINT constraint_name
| PRIMARY KEY
| UNIQUE (column [, column ]...)
} constraint_state [ CASCADE ]
| RENAME CONSTRAINT old_name TO new_name
| { drop_constraint_clause }...
}
out_of_line_constraint:
[ CONSTRAINT constraint_name ]
{ UNIQUE (column [, column ]...)
| PRIMARY KEY (column [, column ]...)
| FOREIGN KEY (column [, column ]...) references_clause
| CHECK (condition)
} [ constraint_state ]
out_of_line_REF_constraint:
{ SCOPE FOR ({ ref_col | ref_attr })
IS [ schema. ] scope_table
| REF ({ ref_col | ref_attr }) WITH ROWID
| [ CONSTRAINT constraint_name ] FOREIGN KEY
( { ref_col [, ref_col ] | ref_attr [, ref_attr ] } ) references_clause
[ constraint_state ]
}
drop_constraint_clause:
(
DROP ( ( PRIMARY KEY
| UNIQUE "(" (column)... ")"
| CONSTRAINT constraint_name )
[ CASCADE ] [( KEEP | DROP ) INDEX ]
)
[ ONLINE ]
)
支持的范围
仅支持 drop_constraint_clause
子句中的 CONSTRAINT constraint_name
删除约束,并且仅支持每次删除一个。示例如下:
ALTER TABLE T DROP CONSTRAINT CST;
不支持的范围
不支持
DROP PRIMARY KEY\UNIQUE
,提示错误。不支持新增约束,会报错。
不支持修改约束,会报错。
不支持重命名约束,会报错。
忽略的属性
说明
如果同步的 DDL 中包含以下属性的定义,则这些属性不会被解析和转换,最终会被忽略。
CASCADE 删除,会忽略。
KEEP|DROP INDEX 是否应该保留或删除索引,会忽略。
ONLINE 删除约束时允许表的 DML 操作,会忽略。