Мой сценарий -> Мне нужно обновить запись, если она существует, и удалить старую (я уверен, что «старая существует») после обновления, иначе вставить «старую». Я не могу выполнить DELETE
запрос после IF EXISTS
, так как это может произойти, если потребуется старый (будет вставлен из инструкции ELSE).
Вот моя попытка:
IF EXISTS (SELECT * FROM dbo.JDOMINO_CON WHERE GBC = '72227')
UPDATE dbo.JDOMINO_CON
SET GBC = '72227',
Description = 'RES_TF,10k,0402,1%,0,1W,100PPM/C',
Buildneed = Buildneed + 200,
Replaced = '72223'
WHERE GBC = '72227'
DELETE FROM dbo.JDOMINO_CON
WHERE GBC = '72223' /* If updated I need to delete replaced row */
ELSE /*Here is error : Incorrect syntax near 'ELSE'*/
INSERT INTO dbo.JDOMINO_CON (GBC,Description, Buildneed, Replaced)
VALUES ('72227', 'RES_TF,10k,0402,1%,0,1W,100PPM/C', 200, NULL)
Пример данных:
CREATE TABLE [dbo].[JDOMINO_CON]
(
[GBC] INT NULL,
[Description] VARCHAR (80) NULL,
[Buildneed] INT NULL,
[Replaced] VARCHAR (80) NULL
);
INSERT INTO @JDOMINO_CON (GBC, [Description], Buildneed, Replaced)
SELECT 72227, 'RES_TF,10k,0402,1%,0,1W,100PPM/C', 200, NULL
UNION ALL
SELECT 72223, 'RES_TF,10k,0402,5%,0,1W,100PPM/C', 200, NULL
UNION ALL
Ожидаемый результат -> только 1 строка -> 72227 / 'RES_TF, 10k, 0402,1%, 0,1 Вт, 100PPM / C' / Buildneed = 400 / Заменено = 72223
Итак, мой вопрос: как добавить оператор удаления, если запись существует?