2012-06-27 5 views
0

Из-за инцидента за несколько месяцев до этого тысячи файлов author_ids были удалены из моей базы данных форума, и я ищу их восстановить. Поскольку в тысячах сообщений нет author_id, оригинальный автор сообщения был помечен вместе с префиксом Guest_.Использование функции UPDATE для массового обновления записей

What the forums currently looks like.

What the forums should look like.

Во всяком случае, here изображение из колонок таблицы сообщений состоит из. И вот изображение indexes.

Мое решение:

UPDATE posts 
SET author_id = 375, author_name = 'Peter' 
WHERE author_name = 'petersmileyface' 

Выше было то, что я пытался, но когда я выполняю код все author_ids были изменены на 375, таким образом, каждый пост был AUTHOR_NAME и в «Питер». w3schools заявляет, что только если я опускаю предложение WHERE, все записи будут обновлены.

Почему мое решение не работает? Благодарим вас за продвинутые ответы.

+2

Я не вижу ничего плохого с вашей SQL, поэтому можно только догадываться, что вы непреднамеренно выполнили без предложения WHERE - он должен был контролировать обновления, как вы ожидали. – GDP

+1

Какая ошибка вы получаете? Может ли быть ограничение на author_id? Если вы вручную обновляете авторов, вы можете сделать UPDATE ... SELECT – Kermit

+0

@njk - на самом деле я не получал никаких ошибок; все прошло отлично. Я просто проверяю author_id и нет, я не думаю, что есть один, но я мог ошибаться, поэтому я сделал снимок экрана из «индексов» (добавлен в вопрос). – ple103

ответ

2

Ваш запрос не является неправильным, вы должны пропустить что-то во время выполнения.

Для массового обновления, вы можете использовать другой тип запроса, с сазе, попробуйте, может быть, у вас не будет проблем больше ...

UPDATE posts 
SET 
    author_id = 
     CASE author_name 
     WHEN 'petersmileyface' THEN 375 
     WHEN 'portugaltrollface' THEN 412 
     END, 
    author_name = 
     CASE author_name 
     WHEN 'petersmileyface' THEN 'Peter' 
     WHEN 'portugaltrollface' THEN 'Pedro' 
     END; 
+0

Этот метод частично работает. Когда я использовал этот код, это происходит (http://i.minus.com/isROd6tdh0h0N.PNG); то есть каждое поле author_name и author_id становится NULL и 0 соответственно. – ple103

+0

Я вижу, что Джейми все еще жив! По крайней мере, мы его сохраняем ... Каждый экран «NULL» соответствует вашему экрану 'author_name = 'petersmileyface'' или ваша проблема возникает для других пользователей? – zessx

+0

значение NULL происходит с каждым пользователем, если я использую вышеуказанный код. – ple103

Смежные вопросы