2017-10-31 9 views
0

テーブルの多くの更新後にdiscount_price列の古い値を返す方法はありますか?ここで多くの更新後に列の値を復元する

は、トランザクション内の変更を適用する場合は、変更を元に戻すためにROLLBACKとの取引をキャンセルすることができ、私の更新の一部

UPDATE products SET discount_price = discount_price + 0.95 
    WHERE discount_price >= 1 AND discount_price <= 10; 

UPDATE products SET discount_price = discount_price + 1.5 
    WHERE discount_price >= 10 AND discount_price <= 30; 

UPDATE products SET discount_price = discount_price + 2 
    WHERE discount_price >= 30 AND discount_price <= 50; 

UPDATE products SET discount_price = discount_price + 3 
    WHERE discount_price >= 50 AND discount_price <= 100; 
+0

MySQLまたはPostgresqlを使用していますか? (含まれていない製品にはタグを付けないでください) – jarlh

+0

phppgadminとの関係は?それはPostgreSQLかMySQLか?あなたがしたいことについてもっと編集して説明してください。私は @jarlh PostgreSQLの –

+0

申し訳ありませんああ、 申し訳ありませんああ、私はあなたがどの古い値を期待していないのpostgresql –

答えて

0

です。

トランザクションがコミットされたらUPDATEを元に戻す方法はありません。

過去のデータを元に戻すには、バックアップからデータベースを復元する必要があります。

PostgreSQLのエキスパートでVACUUMがまだ実行されていない場合は、pageinspect contribモジュールを使用してテーブルから古いデータを取得できます。

+0

最初の更新ステートメントの更新を3回行ったとします。 例: UPDATE製品SET discount_price = discount_price + 0.95 ここでdiscount_price> = 1かつdiscount_price <= 10; discount_price = discount_price SET そしてUPDATE製品 - 0.95 discount_price> = 1 AND discount_price <= 10。 then アップデート製品SET discount_price = discount_price - 0.95 ここでdiscount_price> = 1 AND discount_price <= 5.95; 更新ステートメント は、更新ステートメント –

+0

@MohammadKanaanの前に値を最初の値に戻すためのソリューションがありますので、DBAにバックアップからデータベースを復元するようにお願いします。 – jarlh

+0

回答を延長しましたが、あなたが専門家でもバックアップをしていなければ、古いデータは失われます。 –

関連する問題