2016-09-19 81 views
0

我的目標是從許多不同的表中創建一個主串行號表,並且每個串行號必須是唯一的。Oracle從多個表中添加記錄

CREATE TABLE "TBL_SERIAL_NUMBER_MASTER" 
    ( "INTERNAL_RECORD_ID" VARCHAR2(60) NOT NULL ENABLE, 
    "ASSET_ID" VARCHAR2(60), 
    "SERIAL_NUMBER" VARCHAR2(1000) NOT NULL ENABLE, 
    "VALID" VARCHAR2(60) DEFAULT 'Valid', 
    "HOST_NAME" VARCHAR2(255), 
    CHECK (valid IN ('Invalid', 'Valid')) ENABLE, 
    CHECK (valid IN ('Invalid', 'Valid')) ENABLE, 
    CHECK (valid IN ('Invalid', 'Valid')) ENABLE, 
    CONSTRAINT "TBL_SERIAL_NUMBER_MASTER_CON" PRIMARY KEY ("SERIAL_NUMBER") ENABLE 
    ) ; 


CREATE OR REPLACE TRIGGER "TBL_SERIAL_NUMBER_MASTER_INTER" BEFORE 
    INSERT 
    ON tbl_serial_number_master FOR EACH ROW WHEN (
     NEW.internal_record_id IS NULL 
    ) BEGIN :NEW.internal_record_id := tbl_serial_number_master_inter.NEXTVAL; 
END; 
/
ALTER TRIGGER "TBL_SERIAL_NUMBER_MASTER_INTER" ENABLE; 

我已經使用一個表更新了SERIAL_NUMBER字段。現在我正在嘗試從另一個表中添加更多序列號。這些其他表具有重複和空值序列號您可以請告訴我如何創建查詢來添加已經不在TBL_SERIAL_NUMBER_MASTER中的唯一序列號。

請爲其他表格假設以下字段。

TABLE_SOURCE_B

  1. ID:-PK
  2. SERIAL_NUMBER
  3. 列表項

名稱

+0

是否只想將那些行添加到主表中,這些行不會導致主表中的serial_number重複,或者是否想要在添加到主表時將serial_number替換爲唯一的行? –

+0

我想只將那些行添加到master表中,這不會導致master表中的serial_number重複 –

+0

請參閱鏈接http://stackoverflow.com/questions/14649622/oracle-insert-into-select-dup-val-on-指數的異常行爲 –

回答

0

在你的主表, 'Internal_Record_Id' 有NOT NULL約束。所以我將Source表的ID字段的值插入到'internal_record_id'中。 請嘗試以下查詢。

INSERT INTO 
    TBL_SERIAL_NUMBER_MASTER (INTERNAL_RECORD_ID,SERIAL_NUMBER) 
SELECT ID,SERIAL_NUMBER 
    FROM TABLE_SOURCE_B B 
     WHERE B.SERIAL_NUMBER NOT IN(SELECT SERIAL_NUMBER 
               FROM TBL_SERIAL_NUMBER_MASTER); 

希望它有幫助!

+0

INSERT INTO TBL_SERIAL_NUMBER_MASTER(SERIAL_NUMBER,有效) SELECT DISTINCT(SERIAL_NUMBER), '有效' FROM TBL_DEVICE_LOCALITY WHERE SERIAL_NUMBER IS NOT NULL 錯誤報告 - 唯一約束(TBL_SERIAL_NUMBER_MASTER_CON)違反 00001 00000 - 「唯一約束(%s。%s)違反「 *原因:UPDATE或INSERT語句試圖插入重複密鑰。 對於在DBMS MAC模式下配置的Trusted Oracle,如果重複條目存在於不同級別,則可能會看到此消息爲 。 *操作:刪除唯一限制或不要插入密鑰。 –

+0

我編輯了我的答案。看看它。 –

+0

查詢是否有效? –

相關問題