2010-11-02 4 views
1

Мне нужно сделать массовое обновление до значения столбца. Если есть проблемы, мне нужно будет вернуть столбец обратно к его предыдущему значению. Поэтому я резервирую значения во временную таблицу.Значения столбцов резервного копирования и восстановления

BTW, я использую Oracle.

CREATE TABLE tmp_trial_date_backup AS SELECT cust_id, trial_days FROM customer 
WHERE (trial_days = 0 or trial_days = -99) 

Впоследствии я сделаю обновление.

UPDATE customer SET trial_days = 1 WHERE (trial_days = 0 or trial_days = -99) 

Мой квест ... Как восстановить значения столбцов из таблицы TMP я создал? Сделать

+0

Какую базу вы используете? –

+0

Есть ли причина, по которой вы не можете просто выполнить «ROLLBACK», чтобы вернуть изменение (то есть, почему вы делаете это, прежде чем проверять, есть ли какие-либо проблемы?) –

+1

Это изменение выйдет в прямом эфире, и поэтому проблемы могут не появляться до тех пор, пока возможно, 1 или 2 дня. На данный момент мне нужна стратегия отвода. –

ответ

1

следующее обновление сбрасывает trial_days из customer в базе данных SQL Server.

UPDATE c 
SET  trial_days = tmp.trial_days 
FROM customer c 
     INNER JOIN tmp_trial_date_backup tmp ON tmp.cust_id = c.cust_id 

Возможно, легче может быть, чтобы добавить столбец trial_days_backup к customer таблице.

+0

Я должен был упомянуть, что я нахожусь на оракуле. Но спасибо за это. –

1

В конце концов я сделал следующее.

UPDATE customer c SET trial_days = (SELECT trial_days from tmp_trial_days_backup 
where tmp_trial_days_backup.cust_id = customer_bond.cust_id) 
WHERE EXISTS (SELECT 1 from tmp_trial_days_backup tmp WHERE tmp.cust_id = c.cust_id)