oracle - 如何在11g中的select语句中为新创建的表的列设置默认值

标签 oracle oracle11g

我在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/

相关文章:

oracle - 无法导入 Oracle 转储 : IMP-00033: Warning: Table not found in export file

sql - 如何在多列上创建组合键

java - 密封违规 : package oracle.net.ns 被密封

sql - Oracle SQL 12.1 从字符串中删除不断变化的子字符串

sql - 使用 SQL 生成日期范围

sql - 表声明中的列别名

sql - ORA-00972 标识符别名列名太长

sql - 列出Oracle中给定用户的所有表

Oracle CLOB 列和 LAG

javascript - 在 Oracle Apex Interactive Report 中保存分页