如何將在DB2如何將數據同時插入兩個表中,只有一個sql腳本db2?
例如插入到多個表與一個SQL腳本,將行插入T1 DOCK_DOOR
然後DOCK_DOOR_LANE
多次插入到T2基於所述dock_door_sysid
從第一個表。
我的第一個方法如下。我試圖與三個插入一起使用。另一方面,如果可以通過一個插件自動執行,則插入到第二個桌子上的操作不是和可選的。 感謝您的反饋
SQL示例
WITH ins AS (
INSERT INTO DBF1.DOCK_DOOR (DOCK_DOOR_SYSID,DOOR_NUMBER,DOOR_NAME,DOCK_SYSID,DOOR_SEQ,ENCRYPTION_CODE,RFID_ENBLD_FLAG,LANES_COUNT,CMNT_TEXT,CREATE_TS,CREATE_USERID,UPDATE_TS,UPDATE_USERID,VER_NUMBER,ACTIVE_FLAG,STATUS_SYSID,DOOR_TYPE_SYSID)
VALUES (nextval for DBF1.DOCK_DOOR_SEQ,'026','DOOR025',61,25,NULL,'N','2',NULL,current timestamp,'SQL_INSERT',current timestamp,'SQL_INSERT',0,NULL,1723,1142)
RETURNING door_number,dock_door_sysid),
ins2 AS (
INSERT INTO SIT.DOCK_DOOR_lane (DOCK_DOOR_LANE_SYSID,DOOR_LANE_ID,DOCK_DOOR_SYSID,LANE_ID,CREATE_TS,CREATE_USERID,UPDATE_TS,UPDATE_USERID,VER_NUMBER)
VALUES (nextval for DBF1.DOCK_DOOR_LANE_seq,door_number||''||'A',dock_door_sysid,'A',current timestamp},'SQL_INSERT',current timestamp,'SQL_INSERT',0)
SELECT door_number,dock_door_sysid FROM DBF1.DOCK_DOOR
RETURNING door_number,dock_door_sysid)
INSERT INTO DBF1.DOCK_DOOR_lane (DOCK_DOOR_LANE_SYSID,DOOR_LANE_ID,DOCK_DOOR_SYSID,LANE_ID,CREATE_TS,CREATE_USERID,UPDATE_TS,UPDATE_USERID,VER_NUMBER)
VALUES (nextval for DBF1.DOCK_DOOR_LANE_seq,door_number||''||'B',dock_door_sysid,'B',current timestamp},'SQL_INSERT',current timestamp,'SQL_INSERT',0)
SELECT door_number,dock_door_sysid FROM DBF1.DOCK_DOOR;
表1 =
表2 = Dock_door_lane
這是一個很好的問題,但我不認爲有一個等值。在Oracle中有一個INSERT FIRST和INSERT ALL。在SQL Server中,有一個OUTPUT子句可讓您鏈接多個操作。是否有任何理由不能將所有INSERT都包含在事務中? –
感謝您的反饋凱德。我希望這對DB2來說可能是可能的,因爲用SQL連續插入三個插入的確解決了這個難題,但這隻有在需要插入少量記錄時纔有用。簡而言之,我希望避免這種情況,而不必編寫一個小程序來自動化流程。 –