|
1 / 1 / 3
Регистрация: 26.11.2011
Сообщений: 169
|
|
MySQL Удаление данных из связанных таблиц18.11.2013, 16:33. Показов 3301. Ответов 12
Метки нет (Все метки)
Приветствую!
БД - MySql. Подскажите как реализовать проверку удаления данных из таблицы, например: Таблица клиенты и заказы. Когда удаляем клиента и при этом этот клиент используется в табл заказы, то он не удаляет запись (проводит анализ возможности удаления и выдает системную ошибку mysql о том что запись используется.). Вопрос: как отобразить невозможность удаления на понятном для пользователя языке. Спасибо.
0
|
|
| 18.11.2013, 16:33 | |
|
Ответы с готовыми решениями:
12
Удаление связанных таблиц Удаление записей из связанных таблиц |
|
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
|
|
| 18.11.2013, 16:36 | |
|
Принцип общий для всех СУБД: отлавливаешь появление ошибки/исключения, анализируешь код ошибки, выдаешь свое сообщение.
1
|
|
|
1 / 1 / 3
Регистрация: 26.11.2011
Сообщений: 169
|
|
| 18.11.2013, 16:41 [ТС] | |
|
0
|
|
|
8 / 8 / 1
Регистрация: 11.11.2013
Сообщений: 43
|
|
| 18.11.2013, 16:53 | |
|
alex9910, если у тебя стоит проверка на целостность данных и не установлено каскадное удаление, то удалить запись ты не сможешь. Соответственно воспользуйся try - except
Таблица ошибок MySQL Мануал по конструкции
1
|
|
|
1 / 1 / 3
Регистрация: 26.11.2011
Сообщений: 169
|
||||||
| 18.11.2013, 18:13 [ТС] | ||||||
|
Freestyler2013, спасибо. Пойду разбираться...
Добавлено через 1 час 13 минут Freestyler2013, т.е. как я понял: пишем
0
|
||||||
|
8 / 8 / 1
Регистрация: 11.11.2013
Сообщений: 43
|
||||||
| 18.11.2013, 18:40 | ||||||
|
alex9910, да, конструкция такая.
Только уж сделай красиво, используй
1
|
||||||
|
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
|
|
| 19.11.2013, 09:55 | |
|
Только в except надо проанализировать код ошибки, поскольку ошибки м.б. разные.
0
|
|
|
1 / 1 / 3
Регистрация: 26.11.2011
Сообщений: 169
|
|||||||||||
| 19.11.2013, 13:31 [ТС] | |||||||||||
|
Grossmeister, а как точно понять какую ошибку брать?
Выходит сначала First chance exception at $7722C41F. Exception class EOleException with message 'Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом'. Потом First chance exception at $7722C41F. Exception class EOleException with message '[MySQL][ODBC 5.2(a) Driver][mysqld-5.6.14-log]Cannot delete or update a parent row: a foreign key constraint fails (`mmservice`.`repair`, CONSTRAINT `id_clients` FOREIGN KEY (`id_clients`) REFERENCES `clients` (`id_clients`) ON DELETE NO ACTION ON UPDATE NO ACTION)'. Получается берем EOleException? Как указать именно ошибку самого mysql... В MySQL это ошибка 1451.
0
|
|||||||||||
|
132 / 129 / 31
Регистрация: 12.12.2011
Сообщений: 463
|
|
| 19.11.2013, 14:52 | |
|
Сначала "SELECT COUNT (*) FROM [Заказы] WHERE [ПокупательId] = x". Если 0 - удаляем Покупателя, иначе удаляем сначала заказы, а затем Покупателя. Ну или сообщение выдаем.
0
|
|
|
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
|
||
| 19.11.2013, 14:58 | ||
|
0
|
||
|
132 / 129 / 31
Регистрация: 12.12.2011
Сообщений: 463
|
|
| 19.11.2013, 15:00 | |
|
Имеется ввиду, что это делается между BeginTrans и CommitTrans. А по-хорошему нужно делать встроенные процедуры и каскадное удаление.
0
|
|
|
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
|
||
| 19.11.2013, 15:15 | ||
|
Поэтому каскадное удаление - штука удобная, но в подобных системах практически не используется.
1
|
||
|
1 / 1 / 3
Регистрация: 26.11.2011
Сообщений: 169
|
||||||
| 19.11.2013, 19:13 [ТС] | ||||||
|
Не каскадное удаление зло)
Ну по крайней мере на мой взгляд. Например пользователь удаляет, и даже подтверждает удаление, а потом опомнится и ту-тю =) Только вот подскажите правильно ли так проверять ошибку mysql иль нет?
Добавлено через 3 часа 45 минут Подключил в uses ComObj. Но результата 0 ...
0
|
||||||
| 19.11.2013, 19:13 | |
|
Помогаю со студенческими работами здесь
13
SQL Server 2000+Delphi7 - Удаление из связанных таблиц
Извлечение данных из связанных таблиц Вывод данных из связанных таблиц в DBGrid
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|