从现有表创建新表时传递了“NOT NULL”约束?

时间:2012-07-23 02:09:46

标签: sql oracle

我正在尝试从现有表创建一个表。从NOT NULL约束中传递的其他约束是什么?还有哪些传递给新表的其他属性/功能?

我用来创建新表的查询是:

create table sales_emp
as
select * from emp;

1 个答案:

答案 0 :(得分:3)

以下信息可以在official manual中找到(所有重点都是我的):

  

Oracle数据库从子查询中派生数据类型和长度。 Oracle数据库遵循以下有关完整性约束和其他列和表属性的规则:

     
      
  • Oracle数据库自动定义新表格中的列 NOT NULL约束 明确创建如果子查询选择列而不是包含该列的表达式,则所选表的相应列。如果任何行违反约束,则数据库不会创建表并返回错误。

  •   Oracle数据库在所选表的列上隐式创建的

    NOT NULL约束(例如,对于主键)未结转到新表。

      
  • 此外,主键,唯一键,外键,检查约束,分区条件,索引和列默认值不会传递到新表。

  •   
  • 如果所选表已分区,则可以选择是以相同方式对新表进行分区,以不同方式进行分区还是不对其进行分区。 分区不会转移到新表。在CREATE TABLE子句之前指定任何所需的分区作为AS subquery语句的一部分。

  •