メインテーブルにデータを挿入しながら私がしたいのは何ですか。私はまず古いデータを履歴テーブルに挿入しています。履歴表には、メイン表の内容が2列あり、HISTSEQ_NO
とHIST_DATE
です。列として(SEQUENCE_NO)を持つ履歴テーブルに値を挿入することができません
私の下のコードで挿入しています。 SEQUENCE
一部を処理するための方法が十分ではない値
だから、私は
ORA-00947としてエラーを取得しています。私がオラクルのチャンピオンではないので、親切に私を助けてください。テーブルの
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
)
の心の順に保つには、HISTSEQ_NOの自動インクリメントですか? –
@BobBrinks:はい、それは自動インクリメントされます.. – BNN
@nad Oracleには自動インクリメント列がありません。シーケンスを使用する必要があります。 あなたがXXCUSスキーマの所有者である場合。シーケンスを作成し、それを使用して一意の値を取得することができます。それ以外の場合は、DBAに作成順序を依頼してください。 – AlexSmet