有没有办法在单个“CREATE TABLE AS”语句中设置PRIMARY KEY?
示例 - 我希望将以下内容写入1个语句而不是2:
CREATE TABLE "new_table_name" AS SELECT a.uniquekey, a.some_value + b.some_value FROM "table_a" AS a, "table_b" AS b WHERE a.uniquekey=b.uniquekey;
ALTER TABLE "new_table_name" ADD PRIMARY KEY (uniquekey);
是否有更好的方法可以做到这一点(假设有超过2个表,例如10个)?
答案 0 :(得分:40)
答案 1 :(得分:13)
如果要创建一个具有与另一个表相同的表结构的新表,可以在一个语句(创建新表和设置主键)中执行此操作,如下所示:
create table mytable_clone (like mytable including defaults including constraints including indexes);
答案 2 :(得分:0)
不,没有更短的方法来创建表和主键。
答案 3 :(得分:0)
在mysql中,两个都可以在一个命令中
命令是
create table new_tbl (PRIMARY KEY(`id`)) as select * from old_tbl;
其中id
是主键为old_tbl的列
...完成
答案 4 :(得分:0)
请参见下面的命令,它将创建一个具有所有约束且没有数据的新表。在postgres 9.5中工作
CREATE TABLE IF NOT EXISTS <ClonedTableName>(like <OriginalTableName> including all)
答案 5 :(得分:-4)
你可以这样做
CREATE TABLE IOT (EMPID,ID,Name, CONSTRAINT PK PRIMARY KEY( ID,EMPID))
ORGANIZATION INDEX NOLOGGING COMPRESS 1 PARALLEL 4
AS SELECT 1 as empid,2 id,'XYZ' Name FROM dual;