Я новичок в PostgreSQL и пытаюсь преобразовать скрипты ms sql в Postgres.
Для оператора Merge мы можем использовать вставку при обновлении конфликта или ничего не делать, но использую приведенный ниже оператор , не уверен, что это правильный путь.
MS SQL код:
Declare @tab2(New_Id int not null, Old_Id int not null)
MERGE Tab1 as Target
USING (select * from Tab1
WHERE ColumnId = @ID) as Source on 0 = 1
when not matched by Target then
INSERT
(ColumnId
,Col1
,Col2
,Col3
)
VALUES (Source.ColumnId
,Source.Col1
,Source.Col2
,Source.Col3
)
OUTPUT INSERTED.Id, Source.Id into @tab2(New_Id, Old_Id);
Postgres Код:
Create temp table tab2(New_Id int not null, Old_Id int not null)
With source as( select * from Tab1
WHERE ColumnId = ID)
Insert into Tab1(ColumnId
,Col1
,Col2
,Col3
)
select Source.ColumnId
,Source.Col1
,Source.Col2
,Source.Col3
from source
Мой запрос - как convert OUTPUT INSERTED.Id в postgres. Мне нужен этот идентификатор для вставки записей в другую таблицу (скажем, как дочерние таблицы на основе значений, вставленных в Tab1)