根据UPDATE结果有条件地使用SQL OUTPUT子句

时间:2018-08-30 14:27:05

标签: sql-server output-clause

我很好奇OUTPUT子句是否可以基于创建插入的UPDATE有条件地使用。

例如,带有一个布尔复选框...

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

...现在,这部分工作正常。但是我只想在myTable1中的行实际更新为myTable1.BinCheckBox = 1的情况下使用OUTPUT。

我已经使用数据库触发器进行了此操作,但是如果可能的话,我希望所有这些都在我的语句中发生。伪代码,如...

更新myTable 1 SET BinCheckBox = CASE,当BinCheckBox ='1'然后1 ELSE 0 END ...并且如果BinCheckBox更新为1,然后输出...

谢谢您的建议

更新/答复

因此,我不是使用OUTPUT,而是使用INSERT INTO myTable2 SELECTDELETE 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 个答案:

没有答案