全部產品
Search
文件中心

ApsaraDB for OceanBase:修改、刪除和新增約束

更新時間:Jul 01, 2024

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