C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как удалить запись из гл. таблицы, если с ней связаны записи в дочерней
disaster
Отправлено: 28.02.2006, 10:56


Ученик-кочегар

Группа: Участник
Сообщений: 4



Доброго всем времени суток!
БД Paradox
Суть проблемы следующая: есть две таблицы пользователи и платежи(связь один ко многим).
Имеется между ними контроль целостности на уровне ссылок (referential integrity) с update rule — cascade.
В проекте работаю с ними через TQuery (RequestLive=true). Через DBNavigator пытаюсь удалить запись из главной таблицы с которой связаны несколько записей в дочерней таблице. Выдает ошибку — "Master has detail records. Can not delete or modify". Что происходит ясно. Но как это убрать, т.е. чтобы при удалении записи из головной удались связанные поля в дочерней???
disaster
Отправлено: 01.03.2006, 09:46


Ученик-кочегар

Группа: Участник
Сообщений: 4



Все что нашел через поисковик это то что люди советуют забить на Paradox и на его глючное каскадное удаление :-(
olegenty
Отправлено: 01.03.2006, 09:57


Ветеран

Группа: Модератор
Сообщений: 2412



собственно, я ничего не ответил именно по этой причине. единственно верным представляется именно предложенное тебе решение — забить на Paradox, как трижды по пять раз устаревший, и перейти на "лёгкую" SQL-серверную СУБД, типа Firebird и др.
avc*
Отправлено: 01.03.2006, 10:23


Не зарегистрирован







Забить это совершенно правильно, но все таки почему не дать два запроса подряд (FK-PK то известен)? Или лениво?
olegenty
Отправлено: 01.03.2006, 10:39


Ветеран

Группа: Модератор
Сообщений: 2412



ну так тогда ж фишка Master-Detail становится бесполезно-нафиг-ненужной
disaster
Отправлено: 01.03.2006, 10:51


Ученик-кочегар

Группа: Участник
Сообщений: 4



Короче я так понял все функии добавления/удаления/редактирования лучше писать самому в виде sql, чем полагаться на всякие там DBNavigator
а также лучше перейти на "лёгкую" SQL-серверную СУБД, типа Firebird и др

Отредактировано disaster — 01/03/2006, 10:58
olegenty
Отправлено: 01.03.2006, 10:58


Ветеран

Группа: Модератор
Сообщений: 2412



угу. и в твоём случае использовать для этого TQuery в связке TUpdateSQL

Вернуться в Работа с базами данных в C++Builder