输出插入的 T-SQL

Oda*_*lim 3 sql t-sql sql-server

这可能是一个新手问题,但我非常不熟悉SQL Server 中的OUTPUT子句如何工作。INSERT

问题

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

select top 1 id 
from [dbo].[TEP_Payments_Table] 
order by id desc + 1
Run Code Online (Sandbox Code Playgroud)

这样做的问题是,如果某些用户同时使用该表单,他们可能会拥有重复的 ID。

解决方案

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

为此,我创建了下表:

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

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

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

令我失望的是,这不起作用。再次,我的错,因为我对此不熟悉Output语法。

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

Gor*_*off 7

典型的代码是:

declare @ids table (id int);

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

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