Forum Webscript.Ru

Общие => Базы данных => Тема начата: xRUSha от 23 Апреля 2003, 14:50:03

Название: Откатить последнее действие
Отправлено: xRUSha от 23 Апреля 2003, 14:50:03
Существует ли в MySQL возможность откатить последнее действие. Я случайно сделал UPDATE без указания id и вся таблица (около 1000 записей).... ну в общем предел моих мечтаний это действие отменить
Название: Откатить последнее действие
Отправлено: Croaker от 23 Апреля 2003, 15:17:40
если есть дамп - восстанови оттуда.
Название: Откатить последнее действие
Отправлено: xRUSha от 23 Апреля 2003, 15:21:19
а если нету
Название: Откатить последнее действие
Отправлено: fidget от 23 Апреля 2003, 17:30:53
> а если нету
если ты транзакции не используешь, то нет - нету.
Название: Откатить последнее действие
Отправлено: Maniac от 23 Апреля 2003, 17:36:02
Если у тебя тип таблицы InnoDB или BDB - можно.
Название: Откатить последнее действие
Отправлено: fidget от 23 Апреля 2003, 17:42:59
> Если у тебя тип таблицы InnoDB или BDB
точнее если он транзакции на них использует ;)
Сам по себе тип таблиц делать откат не позволяет ;)
Название: Откатить последнее действие
Отправлено: Maniac от 23 Апреля 2003, 17:45:33
fidget
Ну не буду же я ему мануал цитировать с его transational tables и non-transactional tables - все равно не поймет:)
Название: Откатить последнее действие
Отправлено: xRUSha от 25 Апреля 2003, 11:47:36
А разве в MySQL вооще можно использовать транзакции. С какой версии и где об этом почитать.
Название: Откатить последнее действие
Отправлено: ThE0ReTiC от 25 Апреля 2003, 12:05:17
xRUSha
на mysql.com в разделе документации с версии 4.1
Название: Откатить последнее действие
Отправлено: fidget от 25 Апреля 2003, 12:14:40
> на mysql.com в разделе документации с версии 4.1

не путай народ :-Р

транзакции вообще-то давно есть ;)
в 3.23 таблицы BDB и InnoDB их очень даже поддерживают ;)
Название: Откатить последнее действие
Отправлено: ThE0ReTiC от 25 Апреля 2003, 14:41:22
fidget
[off]ну я так - в общем говорил, не вдаваясь. и тем не менее на mysql.com в разделе документация все есть :)[/off]
Название: Откатить последнее действие
Отправлено: fidget от 25 Апреля 2003, 14:59:15
[OFF]
Цитировать
ThE0ReTiC:
ну я так - в общем говорил,

типа что бы не ошибиться? ;)
[/OFF]
Название: Откатить последнее действие
Отправлено: ThE0ReTiC от 25 Апреля 2003, 15:03:25
угу ;)
Название: Откатить последнее действие
Отправлено: Alexandr от 27 Апреля 2003, 13:30:58
http://www.mysql.com/doc/ru/ANSI_diff_Transactions.html
Название: Откатить последнее действие
Отправлено: Alexandr от 27 Апреля 2003, 13:32:36
Ниже описаны некоторые технические приемы работы с нетранзакционными таблицами:
....
Чтобы избежать применения ROLLBACK, можно использовать следующую стратегию:
Применить LOCK TABLES ... для блокирования всех таблиц, к которым необходим доступ.
Проверить условия.
Обновить, если все в порядке.
Использовать UNLOCK TABLES для освобождения произведенных блокировок.
Обычно этот метод обеспечивает намного более высокую скорость, чем использование транзакций с возможными откатами, хотя и не всегда. Это решение не годится только для одной ситуации - когда кто-либо уничтожает потоки посреди обновления. В этом случае все блокировки будут сняты, но некоторые обновления могут не выполниться.
Название: Откатить последнее действие
Отправлено: fidget от 29 Апреля 2003, 11:50:14
Alexandr, тут немного другая ситуация, чем та, которую ты привел из мануала.
В примере из мануала сначала выполняется проверка, а потом проводится обновление. тут же обновление уже сделано и без транзакций откатить этот запрос невозможно.
Название: Откатить последнее действие
Отправлено: Alexandr от 29 Апреля 2003, 12:13:16
Я в том смысле, что можно переделать скрипт и обойтись без транзакций.
Название: Откатить последнее действие
Отправлено: xRUSha от 29 Апреля 2003, 14:19:11
Цитировать
Чтобы избежать применения ROLLBACK, можно использовать следующую стратегию:
Применить LOCK TABLES ... для блокирования всех таблиц, к которым необходим доступ.
Проверить условия.
Обновить, если все в порядке.
Использовать UNLOCK TABLES для освобождения произведенных блокировок.

Проверить условия? А что имеется ввиду, и как это сделать
Название: Откатить последнее действие
Отправлено: fidget от 29 Апреля 2003, 16:15:28
> Я в том смысле, что можно переделать скрипт и обойтись без транзакций.

не всегда ;) собственно то, что я тебе и говорила уже. LOCK TABLES дает тебе гарантию, что никто другой не может модифицировать твою таблицу до тех пор , пако ты ее не разлочишь. Но ты не сможешь откатить действие.