[20151024]关于ctas与建立主键.txt

简介: [20151024]关于ctas与建立主键.txt --前一阵子别人问的问题,就是ctas是否可以建立主键,对于这种情况平时不这么建立,我给看看文档。 --平时我建立测试表 create table t as select rownum id ,'test' n...
[20151024]关于ctas与建立主键.txt

--前一阵子别人问的问题,就是ctas是否可以建立主键,对于这种情况平时不这么建立,我给看看文档。
--平时我建立测试表
create table t as select rownum id ,'test' name from dual connect by level<=10;

--要实现ctas同时建立主键,看看如下是否可行:

SCOTT@test01p> @ver1
PORT_STRING                    VERSION        BANNER                                                                               CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0           12.1.0.1.0     Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0

SCOTT@test01p> create table t ( id number CONSTRAINTS pk_t primary key , name varchar2(20)) as select rownum,'test' from dual connect by level<=10 ;
create table t ( id number CONSTRAINTS pk_t primary key , name varchar2(20)) as select rownum,'test' from dual connect by level<=10
                 *
ERROR at line 1:
ORA-01773: may not specify column datatypes in this CREATE TABLE

SCOTT@test01p> create table t ( id number  , name varchar2(20)) as select rownum,'test' from dual connect by level<=10 ;
create table t ( id number  , name varchar2(20)) as select rownum,'test' from dual connect by level<=10
                 *
ERROR at line 1:
ORA-01773: may not specify column datatypes in this CREATE TABLE

--错误一样!

SCOTT@test01p> create table t ( id constraint pk_t primary key) as select rownum id,'test' name from dual ;
create table t ( id constraint pk_t primary key) as select rownum id,'test' name from dual
                 *
ERROR at line 1:
ORA-01730: invalid number of column names specified

SCOTT@test01p> create table t ( id  primary key) as select rownum id,'test' name from dual ;
create table t ( id  primary key) as select rownum id,'test' name from dual
                 *
ERROR at line 1:
ORA-01730: invalid number of column names specified

SCOTT@test01p> host oerr ora 1773
01773, 00000, "may not specify column datatypes in this CREATE TABLE"
// *Cause:
// *Action:

--从提示我的感觉字段id后面不能跟数据类型。

SCOTT@test01p> create table t ( id  primary key) as select rownum id,'test' name from dual ;
create table t ( id  primary key) as select rownum id,'test' name from dual
                 *
ERROR at line 1:
ORA-01730: invalid number of column names specified


SCOTT@test01p> create table t ( id  primary key,name) as select rownum id,'test' name from dual ;
Table created.

--OK!

SCOTT@test01p> drop table t purge;
Table dropped.

SCOTT@test01p> create table t ( id constraints pk_t primary key,name) as select rownum id,'test'  from dual ;
Table created.

SCOTT@test01p> drop table t purge;
Table dropped.

SCOTT@test01p> create table t ( id constraints pk_t primary key,name  not null) as select rownum id,'test'  from dual ;
Table created.

SCOTT@test01p> drop table t purge;
Table dropped.

SCOTT@test01p> create table t ( id ,name  not null, constraints pk_t primary key (id,name)) as select rownum id,'test'  from dual ;
Table created.

--总结:
--这种语法不常用。ctas 表后面的字段不能带数据类型,类型由select显示的字段决定,并且表后面要包括全部字段列表。
--还可以把约束放在里面(比如最后的例子)。

目录
相关文章
|
SQL
【SQL系列】将一张表中的行复制到另一张表中
【SQL系列】将一张表中的行复制到另一张表中
227 0
|
SQL 数据库 数据库管理
Sqlite升级时向已有表中增加字段
Sqlite数据库升级时,我们经常会遇到给已有表中增加字段的操作。一般来说,**给已有表中增加字段**是数据库操作中的基操,没必要再专门写篇blog记录的,但是sqlite对SQL语句支持的不够彻底,比方说这次我们用到的"ALTER TABLE"命令。
|
关系型数据库 Java 数据库
使用jpa在postgresql数据库中创建主键自增表
jpa依赖 org.springframework.boot spring-boot-starter-data-jpa org.
3410 0
|
SQL
sql一张表中两个字段指向同一个外键
在项目开发中遇到这么一个例子,首先产品表 tb_product ----------------------------- id    name 1     手机 2    电脑 3     笔记本   第二张表 tb_product_chain(产品链) ---------...
1042 0
|
SQL
sql一个表中的数据插入到另外一个表中
声名:a,b ,都是表  复制代码代码如下: --b表存在(两表结构一样)  insert into b select * from a  若两表只是有部分(字段)相同,则  复制代码代码如下: insert into b(col1,col2,col3,col4,...) select col1,col2,col3,col4,... from a where...  把表a插入到表b中去。
603 0
|
索引 关系型数据库 Oracle
[20160526]建立主键问题.txt
[20160526]建立主键问题.txt --生产系统有1个表没有主键,要求建立发现无法建立,有重复.而且这个索引查询是需要. --实际上可以限制以后的记录不再重复,以前我自己也遇到过,做一个记录.
631 0
|
SQL 关系型数据库 Oracle
[20151231]主外键与空表(12c).txt
[20151231]主外键与空表(12c).txt --主外键的测试例子很多,今天做一个特别的,外部键表为空,也会出现阻塞吗?测试看看。 1.建立环境: SCOTT@test01p> @ver1 PORT_STRING                    V...
841 0
|
SQL Oracle 关系型数据库
[20151231]主外键与空表.txt
[20151231]主外键与空表.txt --主外键的测试例子很多,今天做一个特别的,外部键表为空,也会出现阻塞吗?测试看看。 1.建立环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VE...
939 0