本文為您介紹遷移 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 操作,會忽略。