任何人都可以告诉我如何使用主键,外键在两个表上重复多次插入 这就是我所做的。 这是需要做的事情的一小部分。 StatusTable有大约200行。我试图将此Status表的详细信息拆分为2- Table1,Table2。
将每条记录插入Table1后,我得到了Identity列,这需要将一些额外的东西插入到Table2中。因此,如果StatusTable中有200行,则Table1,Table2中有200行。
但那不是它的工作方式。它将所有200行插入Table1,然后获取Identity,然后在Table2中插入一行。我知道为什么这样做。但不知道如何解决它..
INSERT INTO [dbo].[Table1]
([UserID],
,[FirstName].......)
SELECT 'User1' AS [UserID]
,'FirstName'
FROM [dbo].[StatusTable]
SELECT @id = SCOPE_IDENTITY()
INSERT INTO [dbo].[Table2]
([AccountID],[Status]
values (@id, 'S')
请建议
答案 0 :(得分:4)
使用OUTPUT子句
DECLARE @IDS TABLE (id INT)
INSERT INTO [dbo].[Table1]
([UserID]
,[FirstName])
OUTPUT inserted.id INTO @IDS
SELECT 'User1' AS [UserID]
,'FirstName'
FROM [dbo].[StatusTable]
INSERT INTO [dbo].[Table2]
([AccountID],[Status])
SELECT Id, 'S' FROM @IDS
答案 1 :(得分:0)
在时间逻辑上尝试基于集合的方法而不是此单行。加载第一个表,然后您可以将插入中的第一个表和数据表引用到第二个表中,如果您有某些内容使每一行都是唯一的。
您可以使用select语句而不是值列表:
insert into table
select rows from othertable (or multiple tables...it's a select statement as complicated as you wish)
伪编码:
Insert into table2 (datacolumns)
select table1.id, datacolumn
from statustable s
inner join table1 t
on (whatever makes these rows unique)