我正在尝试从现有表创建一个表。从NOT NULL
约束中传递的其他约束是什么?还有哪些传递给新表的其他属性/功能?
我用来创建新表的查询是:
create table sales_emp
as
select * from emp;
答案 0 :(得分:3)
以下信息可以在official manual中找到(所有重点都是我的):
Oracle数据库从子查询中派生数据类型和长度。 Oracle数据库遵循以下有关完整性约束和其他列和表属性的规则:
- Oracle数据库在所选表的列上隐式创建的
Oracle数据库自动定义新表格中的列
NOT NULL
约束 明确创建如果子查询选择列而不是包含该列的表达式,则所选表的相应列。如果任何行违反约束,则数据库不会创建表并返回错误。
NOT NULL
约束(例如,对于主键)未结转到新表。此外,主键,唯一键,外键,检查约束,分区条件,索引和列默认值不会传递到新表。
如果所选表已分区,则可以选择是以相同方式对新表进行分区,以不同方式进行分区还是不对其进行分区。 分区不会转移到新表。在
CREATE TABLE
子句之前指定任何所需的分区作为AS subquery
语句的一部分。