我目前正在编写一个存储过程,它创建一个现有对象的精确副本。该对象使用多个表,其中 2 个表使用多对多关系:
这是使用的架构:
---------------------------------------
tbl_AssociationA
---------------------------------------
ID | ObjectID | Description
---------------------------------------
1 | 12 | 'Some description'
2 | 12 | 'Some text here'
3 | 13 | 'Some words here'
...
---------------------------------------
---------------------------------------
tbl_AssociationB
---------------------------------------
ID | ObjectID | LabelText
---------------------------------------
1 | 12 | 'Foo'
2 | 12 | 'Foo foo'
3 | 13 | 'Some words...'
4 | 13 | 'Some other Foos'
5 | 14 | 'Some foos here'
6 | 12 | 'Some other words'
...
---------------------------------------
-------------------------
tbl_RelationAB
-------------------------
ID_A | ID_B
-------------------------
1 | 1
2 | 1
2 | 2
2 | 6
3 | 4
3 | 3
...
------------------------
现在,假设我想创建一个Object 12
(我们称之为Object X
)的副本。我想从tbl_AssociationA
和复制记录tbl_AssociationB
,因为我不想对修改进行进一步Object X
修改Object 12
。
tbl_AssociationA
所以,要在and中创建新记录tbl_AssociationB
,我会使用这个:
INSERT INTO tbl_AssociationA
SELECT @NewId,Description FROM tbl_AssociationA WHERE ObjectID=@NewId;
INSERT INTO tbl_AssociationB
SELECT @NewId,LabelText FROM tbl_AssociationB WHERE ObjectID=@NewId;
如何插入tbl_RelationAB
使用那些新创建的记录。请注意,和中的列ID
是。tbl_AssociationA
tbl_AssociationB
IDENTITY