0

我很好奇是否可以根据创建插入的 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

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

我使用数据库触发器进行了此操作,但如果可能的话,我希望这一切都发生在我的声明中。伪代码如...

UPDATE myTable 1 SET BinCheckBox = CASE WHEN BinCheckBox = '1' THEN 1 ELSE 0 END...AND IF BinCheckBox 更新为 1,然后 OUTPUT...

谢谢你的任何建议

更新/回答

因此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;

这似乎工作得很好。

4

0 回答 0