本文为您介绍 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 | - |