Sql server 2008 r2 SQL Server复制行,包括外键引用

Sql server 2008 r2 SQL Server复制行,包括外键引用,sql-server-2008-r2,Sql Server 2008 R2,我有以下资料: CREATE TABLE Parent ( Id int IDENTITY(1,1) NOT NULL, OwnerId int NOT NULL, Name varchar(50) NULL ) CREATE TABLE Child ( Id int IDENTITY(1,1) NOT NULL, ParentId int NOT NULL, -- foreign key to Parent.Id Description c

我有以下资料:

CREATE TABLE Parent 
(
    Id int IDENTITY(1,1) NOT NULL,
    OwnerId int NOT NULL,
    Name varchar(50) NULL
)

CREATE TABLE Child 
(
    Id int IDENTITY(1,1) NOT NULL,
    ParentId int NOT NULL, -- foreign key to Parent.Id
    Description char(3) NULL
)

ALTER TABLE Child 
    ADD CONSTRAINT fk_Child_ParentId 
        FOREIGN KEY (ParentId) REFERENCES Parent (Id);

INSERT INTO Parent (OwnerId, Name) 
VALUES (15, 'Some test')

INSERT INTO Child (ParentId, Description) 
VALUES ((SELECT TOP 1 Id FROM Parent), 'child 1')

INSERT INTO Child (ParentId, Description) 
VALUES ((SELECT TOP 1 Id FROM Parent), 'child 2')
是否有一种简单的方法可以复制表
父记录中的所有行(可能有上万行)并在副本上分配一个新的
所有者ID
(例如25),并且还可以为每个行复制其
子记录,确保新的子记录引用新的父记录

因此,在副本之后的这个示例中,我会有以下记录:

家长:

  • Id=1,OwnerId=15,Name='sometest'
  • Id=2,OwnerId=25,Name='Some test'
儿童:

  • Id=1,ParentId=1,Description='child 1'
  • Id=2,ParentId=1,Description='child 2'
  • Id=3,ParentId=2,Description='child 1'
  • Id=4,ParentId=2,Description='child 2'
请注意,新的子记录(Id=3和4)引用了新的父记录(ParentId=2)

我可以很容易地一个接一个地做,但我可能有成千上万的记录要复制