我已将表从本地数据库复制到生产数据库。但是这里发生的事情是我的自动递增列值也被复制了。我不想那样。
此处我的自动递增列在表RRSOC_ID
中为TBL_RRSOC_STORE_INFO
。
那么我现在应该怎么做才能在没有该列的情况下复制它。我试过这样但数据没有被复制。
create table TBL_RRSOC_STORE_INFO1 as ( select * from TBL_RRSOC_STORE_INFO where 1=0);
下面是我的表结构。
CREATE TABLE "APP_WFM"."TBL_RRSOC_STORE_INFO"
( "RRSOC_ID" NUMBER,
"STORE_CODE" NVARCHAR2(55),
"STATE" NVARCHAR2(55),
"CITY" NVARCHAR2(55),
"SITE_STORE_FORMAT" NVARCHAR2(155),
"STORE_SITENAME" NVARCHAR2(255),
"STORE_SITENAME_LANDL_1" NVARCHAR2(155),
"STORE_SITENAME_LANDL_2" NVARCHAR2(155),
"STORE_ASST_MANAGER_NAME" NVARCHAR2(155),
"STORE_ASST_MANAGER_MOBNO" NVARCHAR2(100),
"STORE_MANAGER_NAME" NVARCHAR2(155),
"MANAGER_MOBNO" NVARCHAR2(100),
"EMP_NEAREST_STORE" NVARCHAR2(155),
"EMP_NEAREST_STORE_MOBNO" NVARCHAR2(100),
"SUPERVISOR_NAME" NVARCHAR2(155),
"SUPERVISOR_MOBNO" NVARCHAR2(155),
"SECURITY_SUP_NAME_STORE" NVARCHAR2(155),
"SECURITY_SUP_MOBNO_STORE" NVARCHAR2(155),
"NAME_ALIGNED_LPO" NVARCHAR2(155),
"LPO_MOBILENO" NVARCHAR2(100),
"ALPM_ALPO_NAME" NVARCHAR2(155),
"ALPM_ALPO_MOBNO" NVARCHAR2(155),
"AREA_MANAGER_NAME" NVARCHAR2(155),
"AREA_MANAGER_MOBNO" NVARCHAR2(155),
"ZONAL_HEAD_NAME" NVARCHAR2(155),
"ZONAL_HEAD_NO" NVARCHAR2(155),
"DVR_IP_ADDRESS" NVARCHAR2(255),
"SIGNET_IP_ADDRESS" NVARCHAR2(155),
"NEAREST_POLICE_STN_NAME" NVARCHAR2(255),
"NEAREST_POLICE_STN_CONTNO" NVARCHAR2(255),
"NEAREST_HOSP_NAME" NVARCHAR2(255),
"NEAREST_HOSP_CONTNO" NVARCHAR2(255),
"NEAREST_FIRE_STN_CONTNAME" NVARCHAR2(255),
"NEAREST_FIRE_STN_CONTNO" NVARCHAR2(255),
"STORE_SPACE_SQFT" NVARCHAR2(155),
"STORE_ADDRESS" NVARCHAR2(555),
"LAUNCH_DATE" DATE,
"CST_TIN_NO" NVARCHAR2(55),
"STORE_EMAILID" NVARCHAR2(155),
"NO_OF_POS" NVARCHAR2(155),
"NO_OF_CAMERA" NVARCHAR2(155),
"DVR_MODEL_GESECURITY" NVARCHAR2(155),
"CAMERA_MODEL" NVARCHAR2(155),
"ALIGNED_LPO_MAILDID" NVARCHAR2(155),
"FACILTY_TEAMNAME" NVARCHAR2(155),
"FACILITY_TEAMNO" NVARCHAR2(155),
"STATE_HEAD_OPS_NAME" NVARCHAR2(255),
"STATE_HEAD_OPS_NO" NVARCHAR2(355),
"LPA" NVARCHAR2(255),
"SLP_STATE_HEAD" NVARCHAR2(255),
"SLP_STATE_HEAD_NO" NVARCHAR2(255),
"CREATED_BY" NVARCHAR2(255),
"CREATED_DATE" DATE,
"LAST_UPDATED_BY" NVARCHAR2(155),
"LAST_UPDATED_DATE" DATE,
"ISACTIVE" CHAR(1 BYTE),
"LATITUDE" NVARCHAR2(100),
"LONGITUDE" NVARCHAR2(100),
"DELETED_BY" NVARCHAR2(255)
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 81920 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "APP_WFM" ;
答案 0 :(得分:0)
使用
select * from TBL_RRSOC_STORE_INFO where 1=0
将创建具有相同列的表,并且数据类型是原始的,但没有数据。源表中的任何行都不会匹配where 1=0
,但仍会确定结果集的元数据,并用于在CTAS语句中创建新表。
如果您想要创建没有其中一列的新表,您可以列出 要明确要求的列:
create table TBL_RRSOC_STORE_INFO1 as
select STORE_CODE, STATE, CITY, ...
from TBL_RRSOC_STORE_INFO;
如果要包含该列而不包含其值,可以将其包含在虚拟值中:
create table TBL_RRSOC_STORE_INFO1 as
select cast(null as number) as RRSOC_ID, STORE_CODE, STATE, CITY, ...
from TBL_RRSOC_STORE_INFO;
如果您有问题列出了您可以从数据字典中生成的所有列,例如:
select 'create table TBL_RRSOC_STORE_INFO1 as select '
|| listagg(column_name, ',') within group (order by column_id)
|| ' from TBL_RRSOC_STORE_INFO;'
from user_tab_columns
where table_name = 'TBL_RRSOC_STORE_INFO'
and column_name != 'RRSOC_ID';
然后运行生成的语句(当然,在检查之后)。
或者,您可以复制整个表格,然后删除RRSOC_ID
列,或将其更新为null,或者您想要的任何新值。
请注意,表约束和触发器不会自动重新创建,因此即使RRSOC_ID
是原始表中的主键,您也可以在新表中将其设置或更改为null。 / p>