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)
我可以很容易地一个接一个地做,但我可能有成千上万的记录要复制