本文為您介紹 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 | - |