![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DELETE FROM
Пётр © (2007-07-10 15:41:00)При нажатии на кнопку пытаюсь удалить запись в главной таблице БД:
ADOQuery.SQL.Text:='DELETE FROM Table WHERE pole=:n';
По полю poleона связано отношением один ко многим с подчинённой.
Удалить не удаётся - пишет, что в подчинённой таблице есть связанные записи.
Как решить этот вопрос?
Anatoly Podgoretsky (2007-07-10 16:37:00) [1]
> А можно как-нибудь, тогда адулять записи в главной, не удаляя
> при этом в подчинённой?
Естественно - убери ссылочную целостность и можешь удалять только в главной, но приготовься к серьезным неприятностям, которые к тому очень трудно будет исправить.
Пётр (2007-07-10 16:25:00) [2]> Сергей М. © (10.07.07 16:21) [8]
информирования местной общественности о конкретно используемой тобой СУБД
По-моему я ничего не утаил:
> ADO
Access
Table ... По полю pole она связано отношением один ко многим с подчинённой.
Ega23 (2007-07-10 16:25:00) [3]
> А можно как-нибудь, тогда адулять записи в главной, не удаляя
> при этом в подчинённой?
Можно. Для этого всего лишь нужно убрать constraint.
Вот только не кажется ли тебе, что ссылочную целостность совсем неглупые люди придумали?
Johnmen (2007-07-10 16:23:00) [4]Всё понятно...
Сергей М. (2007-07-10 16:21:00) [5]
> это два запроса надо писать
Это, конечно же, гораздо сложнее, чем сподобиться до информирования местной общественности о конкретно используемой тобой СУБД)
Пётр (2007-07-10 16:21:00) [6]> Пётр (10.07.07 16:19) [7]
это два запроса надо писать
я имею ввиду: Close, Open, ... и прочее
Пётр (2007-07-10 16:19:00) [7]> Галинка © (10.07.07 15:56) [4]
ADOQuery.SQL.Text := 'DELETE FROM SeconderyTableName WHERE pole=:n'
ADOQuery.SQL.Text := 'DELETE FROM PrimaryTableName WHERE pole=:n'
попробовал - это два запроса надо писать (
А можно как-нибудь, тогда адулять записи в главной, не удаляя при этом в подчинённой?
Галинка (2007-07-10 15:56:00) [8]ADOQuery.SQL.Text := 'DELETE FROM SeconderyTableName WHERE pole=:n'
ADOQuery.SQL.Text := 'DELETE FROM PrimaryTableName WHERE pole=:n'
Anatoly Podgoretsky (2007-07-10 15:56:00) [9]Это не код, а огрызок
Ega23 (2007-07-10 15:56:00) [10]можно наложить conatraint-модификатор on delete cascade
Не знаю, правда, поддерживает ли Access такое...
А в общем случае -
delete Table2 where pole=:n
delete Table1 where pole=:n
Пётр (2007-07-10 15:51:00) [11]Я пытался придумать что-нибудь вроде:
ADOQuery.SQL.Text:='DELETE FROM Table, Table2 WHERE pole=:n';
)))
Вы подскажите - где хоть ответ искать?
- второй ADOQuery.SQL.Text:='DELETE... для подчинённой таблицы
- настройки БД в самом Access
- можно доработать существующий запрос
???
Anatoly Podgoretsky (2007-07-10 15:46:00) [12]По моему достаточно поверить сообщению и поступить в соответстии с ним.
Сергей М. (2007-07-10 15:44:00) [13]
> Как решить этот вопрос?
Предпринять любые допустимые и доступные меры к предварительному удалению связанных записей в подчиненной таблице.
По-моему, это очевидно)