我在Oracle 11g中创建了一个表,其中一个列的默认值.语法是:
create table xyz(emp number,ename varchar2(100),salary number default 0);
Run Code Online (Sandbox Code Playgroud)
这成功创建了.出于某些原因,我需要创建另一个具有相同旧表结构和数据的表.所以,我创建了一个新的表名abc作为
create table abc as select * from xyz.
Run Code Online (Sandbox Code Playgroud)
这里"abc"成功创建了与旧表相同的结构和数据xyz.但是对于旧表"xyz"中的"salary"列,默认值设置为"0".但是在新创建的表"abc"中,未设置默认值.
这完全在Oracle 11g中.请告诉我没有设置默认值的原因以及我们如何使用select语句设置它.
Gar*_*ers 31
您可以在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;
Run Code Online (Sandbox Code Playgroud)
也就是说,它不会从源表/ select继承约束.只有数据类型(长度/精度/比例)由select确定.
原因是CTAS(Create table as select)不会将任何元数据从源复制到目标表,即
为了实现你想要的,我要么
| 归档时间: |
|
| 查看次数: |
129721 次 |
| 最近记录: |