0
UPDATE UPI_ATTRIBUTE SET SITE_INC ='0' 
WHERE USER_PROFILING_NAME IN ('CAR_IMPLICIT','CAR_EXPLICIT')

以上是我用来更新 UPI_ATTRIBUTE 表中的列的查询。并假设如果我需要回滚我对更新查询所做的上述更改,那么在上述情况下如何使用删除查询?当前 SITE_INC 为空。因此,在更新表格后,它将有 0 。如果我需要回滚更改,那么我需要再次将其清空。

更新后如何从上面的列中删除值 0。

4

2 回答 2

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)?

如果您想真正回滚对特定行的更改(而不是完整的表,这可以使用闪回来完成),您可以审核更改以“记住”这些值,然后恢复它们。

即使这样,当您有多个更新时,您也应该考虑恢复到哪个点。

于 2012-06-20T02:21:27.487 回答
0

不确定 Oracle 是否具有用于选择/更新的最终表/旧表功能。

对于 DB2 for z/OS,它具有这样的功能:

 SELECT LASTNAME, BONUS FROM FINAL TABLE
  (UPDATE EMP SET BONUS = BONUS * 1.3
          WHERE JOB = 'CLERK');

然后,选择的结果集包括所有更新的行。您可以使用 rownum 或其他唯一值,然后您可以根据需要将其更新回任何值。

于 2012-06-20T03:26:36.897 回答