sql insert into 插入记录后返回记录的ID

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql insert into 插入记录后返回记录的ID相关的知识,希望对你有一定的参考价值。

实际情况是,我这有大量的数据要插入到B表,并在C表中插入B表和A表的关联记录,
也就是说要在每条记录插入到B表时,得到该条记录的ID,并在C表插入与A表的关联记录。
如何实现。求前辈们解答!谢谢了

可以为B表增加一列,存一个唯一的编号,这样在插入c表的时候用该编号进行关联。
插入完成后再更新为B表的主键即可。
参考技术A 你这个C表插入与A表关联记录,什么意思?

是根据刚插入B表的ID,在A表中找记录,然后把记录插入C表?

那么C表插几个字段?

使用 INSERT INTO (SQL Server 2005) 插入多个值

【中文标题】使用 INSERT INTO (SQL Server 2005) 插入多个值【英文标题】:Insert multiple values using INSERT INTO (SQL Server 2005) 【发布时间】:2010-03-17 13:25:54 【问题描述】:

在 SQL Server 2005 中,我试图弄清楚为什么我不能将多个字段插入到一个表中。以下插入一条记录的查询工作正常:

INSERT INTO [MyDB].[dbo].[MyTable]
           ([FieldID]
           ,[Description])
     VALUES
           (1000,N'test')

但是,指定多个值的以下查询失败:

INSERT INTO [MyDB].[dbo].[MyTable]
           ([FieldID]
           ,[Description])
     VALUES
           (1000,N'test'),(1001,N'test2')

我收到这条消息:

Msg 102, Level 15, State 1, Line 5
Incorrect syntax near ','.

当我在 SQL Sever Management Studio 中查找 INSERT 的帮助时,他们的一个示例显示使用了我使用的“值”语法(括号中的值组并用逗号分隔)。我在 SQL Server Management Studio 中找到的帮助文档看起来像是针对 SQL Server 2008 的,所以这可能是插入不起作用的原因。无论哪种方式,我都无法弄清楚为什么它不起作用。

【问题讨论】:

只是好奇你是否尝试过在值集之间没有,?我知道这篇文章已经很老了,但我很好奇。我在寻找答案时发现了这一点,而我的大部分 SQL 知识都是在过去几年内完成的。 How do I insert multiple rows WITHOUT repeating the "INSERT INTO dbo.Blah" part of the statement? 的可能重复项 【参考方案1】:

您使用的语法是 SQL Server 2008 的新语法:

INSERT INTO [MyDB].[dbo].[MyTable]
       ([FieldID]
       ,[Description])
 VALUES
       (1000,N'test'),(1001,N'test2')

对于 SQL Server 2005,您必须使用多个 INSERT 语句:

INSERT INTO [MyDB].[dbo].[MyTable]
       ([FieldID]
       ,[Description])
 VALUES
       (1000,N'test')

INSERT INTO [MyDB].[dbo].[MyTable]
       ([FieldID]
       ,[Description])
 VALUES
       (1001,N'test2')

另一种选择是使用UNION ALL

INSERT INTO [MyDB].[dbo].[MyTable]
       ([FieldID]
       ,[Description])
SELECT 1000, N'test' UNION ALL
SELECT 1001, N'test2'

【讨论】:

非常感谢您。我们在 SQL 2008 上开发时使用 SQL 2005 作为测试系统。一些开发人员不知道这种语法仅在 SQL 2005 上可用。【参考方案2】:

您还可以使用以下语法:-

INSERT INTO MyTable (FirstCol, SecondCol)
SELECT 'First' ,1
UNION ALL
SELECT 'Second' ,2
UNION ALL
SELECT 'Third' ,3
UNION ALL
SELECT 'Fourth' ,4
UNION ALL
SELECT 'Fifth' ,5
GO

来自here

【讨论】:

【参考方案3】:

在 SQL Server 2008、2012、2014 中,您可以使用单个 SQL INSERT 语句插入多行。

 INSERT INTO TableName ( Column1, Column2 ) VALUES
    ( Value1, Value2 ), ( Value1, Value2 )

另一种方式

INSERT INTO TableName (Column1, Column2 )
SELECT Value1 ,Value2
UNION ALL
SELECT Value1 ,Value2
UNION ALL
SELECT Value1 ,Value2
UNION ALL
SELECT Value1 ,Value2
UNION ALL
SELECT Value1 ,Value2

【讨论】:

以上是关于sql insert into 插入记录后返回记录的ID的主要内容,如果未能解决你的问题,请参考以下文章

SQL INSERT INTO 语句:向表中插入新记录语法及案例剖析

MS Access 使用 SQL INSERT INTO - SELECT FROM 插入记录

使用java和SQL查询INSERT INTO将新记录插入MS访问[关闭]

使用从 insert into 返回的 id,用于使用外键插入记录

sql server 2012中插入记录INSERT后面+INTO与不+之间有啥区别?

insert into values 插入多条指定记录 - sql server 2008新功能