![](/img/trans.png)
[英]Does Oracle allow an SQL INSERT INTO using a SELECT statement for VALUES if the destination table has an GENERATE ALWAYS AS IDENTITY COLUMN
[英]Using SQL OUTPUT for INSERT into a table with Identity (or default values)
我將記錄插入到需要序列號的表(付款)中。 我使用帶有OUTPUT子句的UPDATE語句從另一個表(SequenceNumbers)中獲取並遞增該序列號。
UPDATE [SequenceNumbers] SET SequenceNo = SequenceNo + 1
OUTPUT INSERTED.SequenceNo
WHERE EstateId = @EstateId
我希望能夠將UPDATE語句與Payments INSERT語句結合使用OUTPUT INTO,如下所示
UPDATE [SequenceNumbers] SET Sequence = Sequence + 1
OUTPUT @EstateId AS EstateId,
INSERTED.SequenceNo AS SequenceNo
INTO Payments
WHERE EstateId = @EstateId
但是經過測試后,您必須提供目標表中的所有字段。 我想做的是將Payments表中Id字段的自動Identity值與所有缺失字段的默認值一起使用。
然后,我需要將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)
)
您只需要指定要插入“ 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.