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 に答える