Страница 1 из 1

Удаление записей при внешнем ключе

Добавлено: 26 июл 2009, 21:34
DrewBlin
Добрый день. Столкнулся с такой проблемой (пока теоритически).
Есть база данных с двумя таблицами. Эти таблицы связаны внешним ключом по одному полю.
Теперь мне надо удалить несколько записей из родительской таблицы и, естественно, из дочерней все их подчиненные записи.
Но важно при удалении дочерних записей не только их удалить, но и посчитать, сколько их было удалено.
Вот и возникает проблема: удалил я записи из дочерней таблицы, посчитал, и пока добирался до удаления родительской записи - кто-то добавил новые дочерние записи. И при удалении родительской записи выйдет ошибка нарушения внешнего ключа.
Как защититься от такой ситуации? Каскадное удаление - не решение, т.к. сильно опасно при ошибочной операции и не даст возможность посчитать кол-во удаленных дочерних записей.
Заранее спасибо.

Re: Удаление записей при внешнем ключе

Добавлено: 27 июл 2009, 10:31
Laba
Вот именно для таких ситуаций и придумали транзакции. :D Команда Commit тебе точно поможет.

Re: Удаление записей при внешнем ключе

Добавлено: 27 июл 2009, 11:28
DrewBlin
Расскажи, пожалуйста, как же она мне поможет?

Re: Удаление записей при внешнем ключе

Добавлено: 27 июл 2009, 12:33
Duncon
Загугли что такое транзакция и как ей пользоваться.