我将记录插入需要序列号的表(付款)中。我使用带有OUTPUT子句的UPDATE语句从另一个表(SequenceNumbers)获取并递增此序列号。
UPDATE [SequenceNumbers] SET SequenceNo = SequenceNo + 1
OUTPUT INSERTED.SequenceNo
WHERE EstateId = @EstateId
我希望能够使用OUTPUT INTO将上述UPDATE语句与Payments INSERT语句结合使用,如下所示
UPDATE [SequenceNumbers] SET Sequence = Sequence + 1
OUTPUT @EstateId AS EstateId,
INSERTED.SequenceNo AS SequenceNo
INTO Payments
WHERE EstateId = @EstateId
但是在测试时,您必须提供目标表中的所有字段。我想要做的是使用Payments表中Id字段的自动Identity值以及任何缺少字段的默认值。
然后我需要将Payments表中的Id(Identity)值返回给调用者。
我想知道这是否可行或是否有另一种选择?
我在下面列出了Payments和SequenceNumbers表的简化示例供参考。
CREATE TABLE [Payments](
[EstateId] INT NOT NULL,
[Id] INT NOT NULL IDENTITY ,
[SequenceNo] INT NOT NULL DEFAULT 0,
.... other fields
PRIMARY KEY ([EstateId], [Id])
)
CREATE TABLE [SequenceNumbers] (
[EstateId] INT NOT NULL,
[SequenceNo] INT DEFAULT ((0)) NOT NULL,
PRIMARY KEY CLUSTERED ([EstateId] ASC)
)
答案 0 :(得分:2)
您只需指定 Payments
中的哪些列即可插入:
UPDATE [SequenceNumbers]
SET Sequence = Sequence + 1
OUTPUT Inserted.EstateId, Inserted.SequenceNo
INTO Payments(EstateId, SequenceNo) -- define what columns to insert into!
WHERE EstateId = @EstateId