不能在列为(SEQUENCE_NO)的历史表中插入值
本文关键字:历史 插入 NO SEQUENCE 不能 | 更新日期: 2023-09-27 18:06:07
我想要的是,同时将数据插入到主表中。我首先将其旧数据插入到其历史表中。历史表比主表多2列,即HISTSEQ_NO
和HIST_DATE
。
所以,当插入与我下面的代码。我得到错误
ORA-00947:值不够
那么,SEQUENCE
部分如何处理呢?请帮助我,因为我不是一个Oracle冠军。
string queryInsert;
queryInsert = "insert into xxacl_pN_LEASES_ALL_h select sysdate, t.* from xxacl_pN_LEASES_ALL t";
OracleConnection conInsert = new OracleConnection(System.Configuration.ConfigurationManager.ConnectionStrings["OracleConn"].ToString());
OracleCommand cmd1 = new OracleCommand();
string allQueries = queryInsert;
cmd1.CommandText = allQueries;
cmd1.Connection = conInsert;
conInsert.Open();
cmd1.ExecuteNonQuery();
表脚本
CREATE TABLE XXCUS.XXACL_PN_LEASES_ALL_H
(
HISTSEQ_NO NUMBER NOT NULL,
HIST_DATE DATE NOT NULL,
MKEY NUMBER,
LEASE_ID NUMBER,
LAST_UPDATE_DATE DATE NOT NULL,
LAST_UPDATED_BY NUMBER NOT NULL,
CREATION_DATE DATE NOT NULL,
CREATED_BY NUMBER NOT NULL,
LAST_UPDATE_LOGIN NUMBER,
LEASE_NUM VARCHAR2(30 BYTE) NOT NULL,
PARENT_LEASE_ID NUMBER,
ADDRESS_LOCATION_ID NUMBER,
LEASE_TYPE_CODE VARCHAR2(30 BYTE) NOT NULL,
PAYMENT_TERM_PRORATION_RULE NUMBER,
ABSTRACTED_BY_USER NUMBER NOT NULL,
COMMENTS VARCHAR2(240 BYTE),
STATUS VARCHAR2(1 BYTE),
ORG_ID NUMBER(15) DEFAULT NULL,
LEASE_CLASS_CODE VARCHAR2(30 BYTE) NOT NULL,
LEASE_STATUS VARCHAR2(30 BYTE) NOT NULL,
CUSTOMER_ID NUMBER(15),
DELETE_FLAG CHAR(1 BYTE),
PROJECT_ID NUMBER,
BUILDING_ID NUMBER,
FLOOR_ID NUMBER,
FLAT_ID NUMBER,
CARPET_AREA VARCHAR2(30 BYTE),
SALEABLE_AREA VARCHAR2(30 BYTE),
FLAT_TYPE VARCHAR2(30 BYTE),
FLAT_STATUS VARCHAR2(30 BYTE),
FLAT_SUBSTATUS VARCHAR2(30 BYTE),
CEF_MKEY NUMBER,
BOOKING_NO NUMBER,
ASSIGNED_TO NUMBER,
APPROVER_LAVEL NUMBER,
PDC_TYPE VARCHAR2(30 BYTE),
IS_MIGRATED CHAR(1 BYTE),
SYS_CREATION_DATE DATE,
F_UPDATED_BY NUMBER,
F_FOLLOWUP_DATE DATE,
F_ACTIVITY_ID NUMBER,
F_SUB_ACTIVITY_ID NUMBER,
F_FOLLOWUP_TYPE_ID NUMBER,
F_NEXT_FOLLOW_UP_DATE DATE,
F_NEXT_ACTIVITY_ID NUMBER,
F_NEXT_SUB_ACTIVITY_ID NUMBER,
F_REMARKS VARCHAR2(500 BYTE),
F_FOLLOWUP_SR_NO NUMBER,
F_REASSIGN_REASON NUMBER(10),
USER_TYPE VARCHAR2(10 BYTE),
LOCATION_ID NUMBER(10),
F_LAST_UPDATE_DATE DATE,
F_TASK_ID NUMBER(10),
F_TASK_SR_NO NUMBER(10),
BOOKING_DATE DATE,
INV_DATE DATE,
LOAN_DETAILS VARCHAR2(10 BYTE),
AUTO_GEN_BILLING VARCHAR2(10 BYTE),
ADF VARCHAR2(10 BYTE),
SALES_USER_ID NUMBER(10),
PREDEFINED_CUST CHAR(1 BYTE),
SCHEME_ID NUMBER(10),
LOCK_PERIOD NUMBER(10),
NO_OF_DAYS NUMBER(10),
TYPE_OF_BOOKING VARCHAR2(10 BYTE),
RENTFREE_PERIOD DATE,
FREE_NO_DAYS VARCHAR2(250 BYTE),
LOI_DATE DATE
)
我看到您已经为另一个列HIST_DATE
添加了值sysdate
。现在需要为副列HISTSEQ_NO
添加值。你有xxacl_pN_LEASES_ALL_h
表的序列吗?或者你可能有另一个可以使用的序列?
例如,如果您有序列my_seq
,您可以在查询中使用它:
insert into xxacl_pN_LEASES_ALL_h
select
my_seq.nextval, sysdate, t.*
from
xxacl_pN_LEASES_ALL t
但是要记住列的顺序
修改插入查询以包含您想要插入的字段(不包括自动增量值)
queryInsert = "insert into xxacl_pN_LEASES_ALL_h(<insert column names here>) select sysdate, t.* from xxacl_pN_LEASES_ALL t";
列名的顺序在这里很重要