UPDATE UPI_ATTRIBUTE SET SITE_INC ='0'
WHERE USER_PROFILING_NAME IN ('CAR_IMPLICIT','CAR_EXPLICIT')
以上是我用来更新UPI_ATTRIBUTE表中的列的查询。并且假设我需要回滚我正在使用更新查询进行的上述更改,那么如何在上述情况下使用删除查询?目前SITE_INC为空。因此在更新表之后,它将具有0。如果我需要回滚更改,那么我需要再将它变为空。
如何在更新后从上面的列中删除值0。
答案 0 :(得分:1)
您无法“删除”数据以回滚更新。
即使您要做的唯一更改是将标志从“NULL”设置为“Y”,反之亦然,但在进行多次更新时,无法确定要更新的值。
update 1 : set from "NULL" to "0"
update 2 : set from "0" to "something else"
update 3 : Rollback changes (rollback to which state)?
如果您想真正回滚对特定行的更改(而不是完整的表,可以使用Flashback完成),您可以审核更改以“记住”值,然后还原为它们。
即使这样,当你有多个更新时,你应该考虑恢复哪个点。
答案 1 :(得分:0)
不确定Oracle是否具有select / update的最终表/旧表函数。
对于DB2 for z / OS,它具有以下功能:
SELECT LASTNAME, BONUS FROM FINAL TABLE
(UPDATE EMP SET BONUS = BONUS * 1.3
WHERE JOB = 'CLERK');
然后,select的结果集包括所有更新的行。您可以使用rownum或其他唯一值,然后您可以根据需要将其更新回任何值。