Oracle从多个表中添加记录
Oracle adding records from multiple tables
我的 objective 是从许多不同的 table 构建一个主序列号 table,每个序列号必须是唯一的。
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;
我已经使用 table 更新了 SERIAL_NUMBER 字段。现在我正在尝试从另一个 table 添加更多序列号。这些其他 table 具有重复的空值序列号。您能否建议我如何创建查询以添加 TBL_SERIAL_NUMBER_MASTER 中不存在的唯一序列号。
请为其他table假设以下字段。
TABLE_SOURCE_B
- ID :-PK
- SERIAL_NUMBER
- 列表项
姓名
在您的 Master Table 中,'Internal_Record_Id' 具有 Not Null 约束。所以我将 Source table 的 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);
希望对您有所帮助!
我的 objective 是从许多不同的 table 构建一个主序列号 table,每个序列号必须是唯一的。
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;
我已经使用 table 更新了 SERIAL_NUMBER 字段。现在我正在尝试从另一个 table 添加更多序列号。这些其他 table 具有重复的空值序列号。您能否建议我如何创建查询以添加 TBL_SERIAL_NUMBER_MASTER 中不存在的唯一序列号。
请为其他table假设以下字段。
TABLE_SOURCE_B
- ID :-PK
- SERIAL_NUMBER
- 列表项
姓名
在您的 Master Table 中,'Internal_Record_Id' 具有 Not Null 约束。所以我将 Source table 的 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);
希望对您有所帮助!