У меня есть ' унаследованный ' блестящий фрагмент кода TSQL, который делает следующее:
Очевидно, это отстой (из соображений производительности и элегантности) !!
Вопрос Сначала это выглядит как стандартный случай использования MERGE. Я пробовал делать:
MERGE [dbo].[TableA] AS Target
USING <cursor data set as a select statement> as Src on target.IDA = Src.IDA
WHEN MATCHED
//update
WHEN NOT MATCHED
//insert <------ Fails because obviously a new IDB is required
Также пробовал различные подходы, такие как вложенный выбор, который отправляет IDB на ВЫХОДЕ
, но это не удается, потому что IDB является PK.
Другие виды слияний также не удались, например:
MERGE Table A with <cursor data set as a select statement>
...
MERGE Table A with Table B
WHEN NOT MATCHED
//insert on Table A
WHEN NOT MATCHED
// Update Table B
Кто-нибудь знает об этом? По сути, я думаю, что если мы обобщим, вопрос будет следующим:
Могу ли я вставить и вернуть PK в один оператор, который может быть вложен в другие операторы
Заранее спасибо за любые ответы
Джордж