sql-server - 使用主键、外键重复插入

标签 sql-server t-sql

谁能告诉我如何使用主键、外键对两个表进行重复多次插入 这就是我所做的。 这是需要做的事情的一小部分。 StatusTable 有大约 200 行。我试图将此状态表的详细信息拆分为 2-表 1、表 2。

将每条记录插入 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')

请提出建议

最佳答案

使用 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

关于sql-server - 使用主键、外键重复插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16325998/

相关文章:

sql-server - XML 数据类型方法 "query"的参数 1 必须是字符串文字

sql - 从一组重叠的日期范围中查找共同的日期范围

sql-server - SQL 服务器 : run a script on all databases

sql-server - Azure 数据仓库中的表详细信息

sql - 选择与 MAX 列值对应的列值

sql-server - 我怎样才能得到我想要的结果? SQL Server 2005

sql server 如果不存在则插入并获取插入的id到另一个表中

sql - 如何填充表中行的空白

sql-server - freetds 和 pyodbc 无法连接

mysql - 将 SQL Server 存储过程转换为 Mysql 时出错