插入输出 T-SQL

3

这可能是一个初学者问题,但我并不熟悉 SQL Server 中 INSERTOUTPUT 子句的工作原理。

问题

我正在向一个表中插入值,并希望为该操作生成一个唯一的 ID。之前,我使用以下代码来生成唯一的 ID:

select top 1 id 
from [dbo].[TEP_Payments_Table] 
order by id desc + 1

问题在于,如果同时使用表单的用户可能会有重复的id。

解决方案

通过大量研究,我发现了Output Inserted可以解决这个问题。

为此,我创建了以下表格:

  • TEP_ReceiptID - 其中列ReceiptID是id列和主键。

然后,我尝试将"Output Inserted"插入到我的通常插入语句中,代码如下:

INSERT INTO [dbo].[TEP_Payments_Table] ([col1], [col2]) 
VALUES
OUTPUT inserted.ID INTO dbo.TEP_ReceiptID
('testval1', 'testval2')

令我失望的是,这并没有起作用。再次说明我的错,因为我不熟悉这个Output语法。

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

1个回答

6
典型的代码如下所示:
declare @ids table (id int);

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

如果把 output 子句放在 values 子句之前,你的代码可能会正常工作。


当然...关于你的代码有个快速问题。你声明的这个表格,它是每次执行此代码时新创建的吗?还是事先已经创建好的表格? - Oday Salim
1
@OdaySalim . . . 每次代码运行时都会创建一个表变量。 - Gordon Linoff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接