输出插入的T-SQL

时间:2018-07-11 22:39:03

标签: sql sql-server tsql

这可能是一个菜鸟问题,但是我对OUTPUT的{​​{1}}子句在SQL Server中的工作方式非常不熟悉。

问题

我正在将值插入表中,并且我想为该操作生成唯一的ID。以前,我使用以下代码生成唯一的ID:

INSERT

此问题是,如果某些用户同时使用表单,则他们可能具有重复的ID。

解决方案

经过大量研究,我发现select top 1 id from [dbo].[TEP_Payments_Table] order by id desc + 1 显然解决了这个问题。

为此,我创建了下表:

  • Output Inserted-其中列TEP_ReceiptID是id col和主键。

然后,我尝试在我通常的Insert语句中使用“已插入输出”代码,

ReceiptID

令我失望的是,这行不通。再说一次,我的错是因为我不熟悉这种INSERT INTO [dbo].[TEP_Payments_Table] ([col1], [col2]) VALUES OUTPUT inserted.ID INTO dbo.TEP_ReceiptID ('testval1', 'testval2') 语法。

如果您能告诉我我哪里出问题了,我将不胜感激。

1 个答案:

答案 0 :(得分:3)

典型代码是:

declare @ids table (id int);

insert into [dbo].[TEP_Payments_Table] ([col1], [col2]) 
    output inserted.id into @ids
    values ('testval1', 'testval2');

如果output子句位于values子句之前,您的版本可能会起作用。