Использование предложения SQL OUTPUT Условно на основе результата UPDATE

Мне любопытно, можно ли условно использовать предложение OUTPUT на основе ОБНОВЛЕНИЯ, которое создает вставку.

Например, с логическим флажком...

UPDATE myTable1 SET BinCheckBox = CASE WHEN BinCheckBox = '1' THEN 1 ELSE 0 END

OUTPUT

inserted.col1
inserted.col2

INTO

myTable2

WHERE myTable1.id = myFormField.id

... теперь эта часть работает нормально. Но я хочу использовать OUTPUT, только если строка в myTable1 фактически обновлена ​​до myTable1.BinCheckBox = 1.

Я работал с базой данных Trigger, но я хотел бы, чтобы все это произошло в моем заявлении, если это возможно. Псевдо код, как...

ОБНОВЛЕНИЕ myTable 1 SET BinCheckBox = СЛУЧАЙ, КОГДА BinCheckBox = '1' ТОГДА 1, ЛИБО 0 КОНЕЦ... И ЕСЛИ BinCheckBox обновлен до 1, затем ВЫХОД...

Спасибо за любой совет

ОБНОВЛЕНИЕ / ОТВЕТ

Так что вместо использования OUTPUT, Я использую INSERT INTO myTable2 SELECTи DELETE myTable2 FROM..., для обработки удаления строк. Вот так...

UPDATE myTable1 SET BinCheckBox = CASE WHEN BinCheckBox = '1' THEN 1 ELSE 0 END

INSERT INTO myTable2 (col1,col2)
SELECT col1,col2
FROM myTable1 m1
WHERE (BinCheckBox = 1)
AND NOT EXISTS (SELECT m2.id FROM myTable2 m2
WHERE (m2.id=m1.id));

DELETE m2 FROM myTable2
JOIN myTable1 m1 on m2.id=m1.id
WHERE m1.id=,y.id AND m1.BinCheckBox = 0;

Кажется, это отлично работает.

0 ответов

Другие вопросы по тегам