Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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]


> Как решить этот вопрос?


Предпринять любые допустимые и доступные меры к предварительному удалению связанных записей в подчиненной таблице.

По-моему, это очевидно)


Наверх

Титульная страница Поиск, карта сайта Написать письмо