不能在列为(SEQUENCE_NO)的历史表中插入值

本文关键字:历史 插入 NO SEQUENCE 不能 | 更新日期: 2023-09-27 18:06:07

我想要的是,同时将数据插入到主表中。我首先将其旧数据插入到其历史表中。历史表比主表多2列,即HISTSEQ_NOHIST_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

)

不能在列为(SEQUENCE_NO)的历史表中插入值

我看到您已经为另一个列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";

列名的顺序在这里很重要