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
这样做的问题是,如果某些用户同时使用该表单,他们可能会拥有重复的 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')
令我失望的是,这不起作用。再次,我的错,因为我对此不熟悉Output语法。
如果您能告诉我哪里出了问题,我将不胜感激。
典型的代码是:
declare @ids table (id int);
insert into [dbo].[TEP_Payments_Table] ([col1], [col2]) 
    output inserted.id into @ids
    values ('testval1', 'testval2');
output如果该子句位于该子句之前,您的版本可能会起作用values。