【发布时间】:2014-10-17 15:48:32
【问题描述】:
我将记录插入到需要序列号的表(付款)中。我使用带有 OUTPUT 子句的 UPDATE 语句从另一个表 (SequenceNumbers) 获取并增加此序列号。
UPDATE [SequenceNumbers] SET SequenceNo = SequenceNo + 1
OUTPUT INSERTED.SequenceNo
WHERE EstateId = @EstateId
我希望能够将上述 UPDATE 语句与使用 OUTPUT INTO 的 Payments INSERT 语句结合起来,如下所示
UPDATE [SequenceNumbers] SET Sequence = Sequence + 1
OUTPUT @EstateId AS EstateId,
INSERTED.SequenceNo AS SequenceNo
INTO Payments
WHERE EstateId = @EstateId
但在测试时,您必须提供目标表中的所有字段。我想要做的是使用 Payments 表中 Id 字段的自动标识值以及任何缺失字段的默认值。
然后我需要将 Payments 表中的 Id(身份)值返回给调用者。
我想知道这是否可能或是否有其他选择?
我在下面放置了 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)
)
【问题讨论】:
标签: sql sql-server