一条语句只能做到将表的数据放到临时表,但是不能为临时表创建主键的.
比如:create table temp_table as select * from table;
如果要创建主键的话,就只能写到一个PL/SQL块里面
比如:
declare
begin
execute immediate 'create table temp_table as select * from table';
execute immediate 'alter table temp_table add constraint PK_id primary key on (col_id) ';
end;
先创建一个序列,你先要保证你这个union的两个查询列完全一致,
先创建一个临时表A ,
CREATE TABLE LINSHI_A AS SELECT 列1,列2 FROM TABLE1 UNION SELECT 列1,列2 FROM TABLE2
再创建一个临时表
CREATE TABLE LINSHI_B AS SELECT 序列.NEXTVAL ID(主键名),列1,列2 FROM LINSHI_A
这样LINSHI_B就有了主键,主键名是ID
希望可以帮到你哦!
select * into #t from a union select * from b --前提两表列的结构要一致,可以将列名一一列出
alter table #t add constraint PK__#t__id primary key on (id)