这可能是一个菜鸟问题,但是我对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')
语法。
如果您能告诉我我哪里出问题了,我将不胜感激。
答案 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
子句之前,您的版本可能会起作用。