我在Oracle 11g中使用其中一列的默认值创建了一个表。语法是:
create table xyz(emp number,ename varchar2(100),salary number default 0);
创建成功。由于某些原因,我需要创建具有相同旧表结构和数据的另一个表。所以我创建了一个新表,名称为
abc
为create table abc as select * from xyz.
在这里,“abc”成功创建了具有与旧表
xyz
相同的结构和数据。但是,对于旧表“xyz”中的“工资”列,默认值设置为“0”。但是,在新创建的表“abc”中未设置默认值。这一切在Oracle 11g中。请告诉我为什么未设置默认值的原因,以及如何使用select语句设置此默认值。
最佳答案
您可以在CREATE TABLE AS SELECT中指定约束和默认值,但是语法如下
create table t1 (id number default 1 not null);
insert into t1 (id) values (2);
create table t2 (id default 1 not null)
as select * from t1;
也就是说,它不会从源表/选择继承约束。选择仅确定数据类型(长度/精度/比例)。
关于oracle - 如何在11g中的select语句中为新创建的表的列设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5934083/