0

我正在尝试从现有表创建一个表。除了约束之外,还有哪些其他NOT NULL约束?还有哪些其他属性/功能传递给新表?

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

create table sales_emp
as
select * from emp;
4

1 回答 1

3

以下信息可以在官方手册中找到(所有重点都是我的):

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

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

  • NOT NULLOracle 数据库对选定表的列(例如,主键)隐式创建的约束不会传递到新表。

  • 此外,主键、唯一键、外键、检查约束、分区标准、索引和列默认值不会被转移到新表中。

  • 如果选定的表是分区的,您可以选择新表是否以相同方式分区、不同分区或不分区。分区不会转移到新表。CREATE TABLE在子句之前的语句中指定任何所需的分区。AS subquery

于 2012-07-23T09:56:07.890 回答