全部產品
Search
文件中心

ApsaraDB for OceanBase:有約束的列修改類型

更新時間:Jul 01, 2024

本文為您介紹 Oracle 資料庫和 OceanBase 資料庫 Oracle 租戶對於修改不同約束下的列的欄位類型的不相容情境。

說明
  • 本文表格中,OceanBase 資料庫 Oracle 租戶允許執行修改一列是經過類型映射後的結果。

  • 本文表格中,虛線(-)表示沒有、all 表示全部類型。

主鍵(PRIMAEY KEY)約束下欄位類型的修改

如果 主鍵 列中包含下表中的欄位類型,通過 ALTER TABLE table_name MODIFY DDL,對該列進列欄位類型修改操作,Oracle 資料庫和 OceanBase 資料庫 Oracle 租戶的區別如下。

Oracle 資料庫的欄位類型

允許執行修改的類型

OceanBase 資料庫 Oracle 租戶的欄位類型

允許執行修改的類型

INTEGER

all

NUMBER(38,0)

-

INT

all

NUMBER(38,0)

-

SMALLINT

all

NUMBER(38,0)

-

BINARY_FLOAT

all

BINARY_FLOAT

-

BINARY_DOUBLE

all

BINARY_DOUBLE

-

DECIMAL

all

NUMBER

-

DEC

all

NUMBER

-

NUMERIC

all

NUMBER

-

REAL

all

NUMBER

-

FLOAT

all

FLOAT

-

NUMBER

all

NUMBER

-

NCHAR

all

NCHAR

-

CHAR

all

CHAR

-

CHARACTER

all

CHAR(n)

-

NVARCHAR2

all

NVARCHAR2(size)

-

VARCHAR2

all

VARCHAR2

-

VARCHAR

all

VARCHAR2

-

RAW

all

RAW

-

ROWID

all

ROWID

UROWID

UROWID

all

UROWID

ROWID

TIMESTAMP

all

TIMESTAMP

-

DATE

all

DATE

-

INTERVAL YEAR TO MONTH

all

INTERVAL YEAR TO MONTH

-

INTERVAL DAY TO SECOND

all

INTERVAL DAY TO SECOND

-

唯一鍵(UNIQUE KEY)約束下欄位類型的修改

如果 唯一鍵 列中包含上述表格中的欄位類型,通過 ALTER TABLE table_name MODIFY DDL 對該列進列欄位類型修改操作,Oracle 資料庫和 OceanBase 資料庫 Oracle 租戶的區別與主鍵(PRIMAEY KEY)約束下欄位類型的修改一致。

CHECK 條件約束下欄位類型的修改

如果 CHECK 約束下的列中包含下表中的欄位類型,通過 ALTER TABLE table_name MODIFY DDL,對該列進列欄位類型修改操作,Oracle 資料庫和 OceanBase 資料庫 Oracle 租戶的區別如下。

Oracle 資料庫的欄位類型

允許執行修改的類型

OceanBase 資料庫 Oracle 租戶的欄位類型

允許執行修改的類型

INTEGER

NUMERIC\NUMBER\DECIMAL\DEC\FLOAT\REAL\INT\SMALLINT

NUMBER(38,0)

-

INT

NUMERIC\NUMBER\DECIMAL\DEC\FLOAT\REAL\INTEGER\SMALLINT

NUMBER(38,0)

-

SMALLINT

NUMERIC\NUMBER\DECIMAL\DEC\FLOAT\REAL\INTEGER\INT

NUMBER(38,0)

-

BINARY_FLOAT

-

BINARY_FLOAT

-

BINARY_DOUBLE

-

BINARY_DOUBLE

-

DECIMAL

NUMERIC\NUMBER\DEC\FLOAT\REAL\INT\SMALLINT\INTEGER

NUMBER

-

DEC

NUMERIC\NUMBER\DECIMAL\FLOAT\REAL\INT\SMALLINT\INTEGER

NUMBER

-

NUMERIC

NUMBER\DEC\DECIMAL\FLOAT\REAL\INT\SMALLINT\INTEGER

NUMBER

-

REAL

NUMBER\DEC\DECIMAL\FLOAT\INT\SMALLINT\INTEGER

NUMBER

-

FLOAT

NUMERIC\NUMBER\DEC\DECIMAL\REAL\INT\SMALLINT\INTEGER

FLOAT

-

NUMBER

NUMERIC\DEC\DECIMAL\FLOAT\REAL\INT\SMALLINT\INTEGER

NUMBER

-

NCHAR

CHAR\CHARACTER\NVARCHAR2\VARCHAR2\VARCHAR

NCHAR

-

CHAR

NCHAR\CHARACTER\NVARCHAR2\VARCHAR2\VARCHAR

CHAR

-

CHARACTER

NCHAR\CHAR\NVARCHAR2\VARCHAR2\VARCHAR

CHAR

-

NVARCHAR2

NCHAR\CHAR\CHARACTER\VARCHAR2\VARCHAR

NVARCHAR2

-

VARCHAR2

NCHAR\CHAR\CHARACTER\NVARCHAR2\VARCHAR

VARCHAR2

-

VARCHAR

NCHAR\CHAR\CHARACTER\NVARCHAR2\VARCHAR2

VARCHAR2

-

RAW

-

RAW

-

ROWID

-

ROWID

UROWID

UROWID

-

UROWID

ROWID

TIMESTAMP

DATE

TIMESTAMP

-

TIMESTAMP WITH LOCAL TIME ZONE

-

TIMESTAMP WITH LOCAL TIME ZONE

-

DATE

TIMESTAMP

DATE

-

INTERVAL YEAR TO MONTH

-

INTERVAL YEAR TO MONTH

-

INTERVAL DAY TO SECOND

-

INTERVAL DAY TO SECOND

-

外鍵(FOREIGN KEY)約束下欄位類型的修改

如果 外鍵 列中包含下表中的欄位類型,通過 ALTER TABLE table_name MODIFY DDL,對該列進列欄位類型修改操作,Oracle 資料庫和 OceanBase 資料庫 Oracle 租戶的區別如下。

Oracle 資料庫的欄位類型

允許執行修改的類型

OceanBase 資料庫 Oracle 租戶的欄位類型

允許執行修改的類型

INTEGER

NUMERIC\NUMBER\DECIMAL\DEC\FLOAT\REAL\INT\SMALLINT

NUMBER(38,0)

-

INT

NUMERIC\NUMBER\DECIMAL\DEC\FLOAT\REAL\INTEGER\SMALLINT

NUMBER(38,0)

-

SMALLINT

NUMERIC\NUMBER\DECIMAL\DEC\FLOAT\REAL\INTEGER\INT

NUMBER(38,0)

-

BINARY_FLOAT

-

BINARY_FLOAT

-

BINARY_DOUBLE

-

BINARY_DOUBLE

-

DECIMAL

NUMERIC\NUMBER\DEC\FLOAT\REAL\INT\SMALLINT\INTEGER

NUMBER

-

DEC

NUMERIC\NUMBER\DECIMAL\FLOAT\REAL\INT\SMALLINT\INTEGER

NUMBER

-

NUMERIC

NUMBER\DEC\DECIMAL\FLOAT\REAL\INT\SMALLINT\INTEGER

NUMBER

-

REAL

NUMBER\DEC\DECIMAL\FLOAT\INT\SMALLINT\INTEGER

NUMBER

-

FLOAT

NUMERIC\NUMBER\DEC\DECIMAL\REAL\INT\SMALLINT\INTEGER

FLOAT

-

NUMBER

NUMERIC\DEC\DECIMAL\FLOAT\REAL\INT\SMALLINT\INTEGER

NUMBER

-

NCHAR

CHAR\CHARACTER

NCHAR

-

CHAR

NCHAR\CHARACTER

CHAR

-

CHARACTER

NCHAR\CHAR

CHAR

-

NVARCHAR2

VARCHAR2\VARCHAR

NVARCHAR2

-

VARCHAR2

NVARCHAR2\VARCHAR

VARCHAR2

-

VARCHAR

NVARCHAR2\VARCHAR2

VARCHAR2

-

RAW

-

RAW

-

ROWID

-

ROWID

UROWID

UROWID

-

UROWID

ROWID

TIMESTAMP

-

TIMESTAMP

-

TIMESTAMP WITH LOCAL TIME ZONE

-

TIMESTAMP WITH LOCAL TIME ZONE

-

DATE

-

DATE

-

INTERVAL YEAR TO MONTH

-

INTERVAL YEAR TO MONTH

-

INTERVAL DAY TO SECOND

-

INTERVAL DAY TO SECOND

-