我有两个表,一个主表和一个关系表。主表作为插入时生成的自动标识ID字段(DOCUMENT_ID)。关系表将主表中的DOCUMENT_ID与USER_NAME条目联系起来。我希望能够在使用Master表生成的新自动生成的DOCUMENT_ID建立新关系的同时,在主表中创建记录的副本以及在关系表中创建其关系的副本。这是我的表和所需输出的示例。
MASTER TABLE:
DOCUMENT_ID | DOCUMENT_NAME
1 | Application
2 | Invoice
3 | Receipt
关系表:
DOCUMENT_ID| USER_NAME
1 | John
1 | Amy
2 | Jim
2 | Jane
3 | John
3 | Jane
我想从主表中复制记录并创建关系的副本,以便我的输出如下所示:
插入新记录的主表: 请注意,DOCUMENT_ID列会自动生成ID。
DOCUMENT_ID | DOCUMENT_NAME
1 | Application
2 | Invoice
3 | Receipt
7 | Application
8 | Invoice
9 | Receipt
关系表: 此表需要绑定主表中创建的新ID与原始DOCUMENT_ID关联的USER_NAMES副本之间的关系。
DOCUMENT_ID| USER_NAME
1 | John
1 | Amy
2 | Jim
2 | Jane
3 | John
3 | Jane
7 | John
7 | Amy
8 | Jim
8 | Jane
9 | John
9 | Jane
答案 0 :(得分:0)
我没有时间测试这个TSQL,但它应该给你一个想法:
declare @documentID int
declare @newDocumentID int
declare @documentName VARCHAR(256)
declare master_cursor cursor for
select DOCUMENT_ID, DOCUMENT_NAME
from MASTER_TABLE
OPEN master_cursor
FETCH NEXT FROM master_cursor INTO @documentID, @documentName
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO MASTER_TABLE(DOCUMENT_NAME) VALUES (@documentName)
-- read the just inserted Document ID
SELECT @newDocumentID = MAX(DOCUMENT_ID)
FROM MASTER_TABLE
WHERE DOCUMENT_NAME = @documentName
-- now insert new values in relations table
INSERT INTO RELATIONS_TABLE
SELECT @newDocumentID, USER_NAME
FROM RELATIONS_TABLE
WHERE
DOCUMENT_ID = @documentID
FETCH NEXT FROM master_cursor INTO @documentID, @documentName
END