Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 удаление строк  [new]
Zvez_DA
Member

Откуда: Москва
Сообщений: 68
Добрых выходных!
Подскажите плиззззз, нужно удалить строки из базы, все прописываю, а он мне не дает удалить, на этой таблице стоит около 8 FK-ключей. и какой выбрать не знаю....для того что б все позволило...
но вот если захожу из программы в которой офис работает и захожу в кажду запись отделно, то удаляется все спокойно....
18 июл 09, 18:26    [7432451]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
Zvez_DA
Member

Откуда: Москва
Сообщений: 68
Точнее какой ключ я знаю, а как вот на время разрешить удалять не знаююю....
18 июл 09, 18:30    [7432453]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
flexgen
Member

Откуда: Город на песке
Сообщений: 765
Zvez_DA,

Я так понимаю что таблица, в которой удаляются данные, является родительской для других таблиц, связанных с ней по foreign key constraint? Значит, сначала надо удалить данные в связанных таблицах, а уж потом в родительской таблице. Отключать констрейнты я бы лично не стал, чревато большой головной болью в виде нарушения целостности данных.
18 июл 09, 19:13    [7432473]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
CmeTanka
Member [заблокирован]

Откуда: Рашен Федерэйшен
Сообщений: 2272
flexgen
Zvez_DA,

Я так понимаю что таблица, в которой удаляются данные, является родительской для других таблиц, связанных с ней по foreign key constraint? Значит, сначала надо удалить данные в связанных таблицах, а уж потом в родительской таблице. Отключать констрейнты я бы лично не стал, чревато большой головной болью в виде нарушения целостности данных.

зачем выполнять мартышкину работу??? Достаточно у связи в диаграмме поставить Delete rule в Cascade

К сообщению приложен файл. Размер - 0Kb
18 июл 09, 21:37    [7432559]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
flexgen
Member

Откуда: Город на песке
Сообщений: 765
CmeTanka,

Осталось объяснить топикстартеру где это и с чем его едят. :-) Ты сам вызвался.
18 июл 09, 23:09    [7432664]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
CmeTanka
Member [заблокирован]

Откуда: Рашен Федерэйшен
Сообщений: 2272
flexgen
CmeTanka,

Осталось объяснить топикстартеру где это и с чем его едят. :-) Ты сам вызвался.

ну что ж, я готов)))

будем решать проблемы по мере их поступления...
18 июл 09, 23:20    [7432676]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
Zvez_DA
Member

Откуда: Москва
Сообщений: 68
ммм....это таблица не главная получается, когда я пытаюсь удалить данные она ссылается на другую таблицу и её ключ...вот!
20 июл 09, 10:24    [7434330]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
CmeTanka
Member [заблокирован]

Откуда: Рашен Федерэйшен
Сообщений: 2272
Zvez_DA
ммм....это таблица не главная получается, когда я пытаюсь удалить данные она ссылается на другую таблицу и её ключ...вот!

а по-русски?
20 июл 09, 10:27    [7434345]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
Glory
Member

Откуда:
Сообщений: 104760
Zvez_DA
ммм....это таблица не главная получается, когда я пытаюсь удалить данные она ссылается на другую таблицу и её ключ...вот!

Ну так FK-ключи вообще-то для того и придумывались, чтобы в родительской таблице нельзя было удалить запись, пока есть дочерние записи
Так что удаляйте записи в правильном порядке
20 июл 09, 10:34    [7434402]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
Zvez_DA
Member

Откуда: Москва
Сообщений: 68
ну вообщем попрбую на картинках показать:
вот моя таблица, в которой лежат все данные, которые мне нужно удалить:

К сообщению приложен файл. Размер - 0Kb
20 июл 09, 11:33    [7434810]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
Glory
Member

Откуда:
Сообщений: 104760
Zvez_DA
ну вообщем попрбую на картинках показать:
вот моя таблица, в которой лежат все данные, которые мне нужно удалить:

Ну так удаляйте.
Сначала из дочерних таблиц. Потом из родительской. В чем проблема то ?
20 июл 09, 11:35    [7434821]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
2Zvez_DA
а еще можете запустить профайлер. удалить записи через "программу" зафиксировать все, что отправляется на сервер.
и потом готовый код использовать.

для спящего время бодрствования равносильно сну
20 июл 09, 11:36    [7434838]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Zvez_DA
ну вообщем попрбую на картинках показать:
вот моя таблица, в которой лежат все данные, которые мне нужно удалить:
FOREIGN KEY, которые Вы показали, определены в таблице dbo.hotelpr, из которой Вы хотите удалить?
Надо сказать, что эти FK не могут служить препятствием для такого удаления.
Мешать могут FK, определённые в других таблицах, и ссылающиеся на PK_hotelpr.
20 июл 09, 11:43    [7434880]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
Zvez_DA
Member

Откуда: Москва
Сообщений: 68
так вот ошибку он мне выводит такую:

К сообщению приложен файл. Размер - 0Kb
20 июл 09, 11:56    [7434979]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
Glory
Member

Откуда:
Сообщений: 104760
Zvez_DA
так вот ошибку он мне выводит такую:

И что вам мешает прочитать текст этой ошибки ?
20 июл 09, 12:01    [7435018]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
Джонни Кейдж
Member

Откуда: стольный град Киев
Сообщений: 31
Есть у меня процедурка одна - каскадно удаляет записи в дочерних таблицах при удалении записей в родительской (в т.ч. и в ситуации, когда дочерние таблицы имеют своих "дочек").

Может, это то, что нужно?
20 июл 09, 14:10    [7435890]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
Michael_N
Member

Откуда: Белокуриха, АК
Сообщений: 150
Zvez_DA
так вот ошибку он мне выводит такую:


Ну так и удалите записи из таблицы, которая явно указана в тексте сообщения об ошибке.
20 июл 09, 14:56    [7436201]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
ererererer1
Guest
из таблицы htpatpr надо удалить сначала записи, потому что в ней есть ссылка на вашу исходную таблицу hotelpr
20 июл 09, 15:18    [7436298]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
CmeTanka
Member [заблокирован]

Откуда: Рашен Федерэйшен
Сообщений: 2272
Джонни Кейдж
Есть у меня процедурка одна - каскадно удаляет записи в дочерних таблицах при удалении записей в родительской (в т.ч. и в ситуации, когда дочерние таблицы имеют своих "дочек").

Может, это то, что нужно?


А вы знаете, что sql server позволяет удалять автоматом подчинённые записи? Достаточно у связи в диаграмме поставить Delete rule в Cascade

И не нужно никаких костылей в виде хран процедур.
20 июл 09, 15:29    [7436344]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
CmeTanka
Джонни Кейдж
Есть у меня процедурка одна - каскадно удаляет записи в дочерних таблицах при удалении записей в родительской (в т.ч. и в ситуации, когда дочерние таблицы имеют своих "дочек").

Может, это то, что нужно?


А вы знаете, что sql server позволяет удалять автоматом подчинённые записи? Достаточно у связи в диаграмме поставить Delete rule в Cascade

И не нужно никаких костылей в виде хран процедур.
А Вы знаете, что это далеко не всегда возможно?
И понадобятся "костыли" в виде триггеров, например...
20 июл 09, 15:31    [7436357]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
Джонни Кейдж
Member

Откуда: стольный град Киев
Сообщений: 31
CmeTanka,

Конечно, мне знакома сия возможность каскадного удаления / обновления записей. Но она не всегда применима.

Простой пример: есть справочник поставщиков, есть документы от поставщиков, есть фактуры документов от поставщиков. Разумеется, FK с каскадным удалением устанавливается между таблицами "паспорт документа" и "фактура документа", и НЕ устанавливается между Поставщиками и Документами. И удаление записи из справочника Поставщиков потребует "ручного" вмешательства в виде триггера либо хранимки.
20 июл 09, 15:55    [7436482]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
Джонни Кейдж
Member

Откуда: стольный град Киев
Сообщений: 31
По предыдущему посту уточнение - разумеется, в приведенном примере между Поставщиками и Документами устанавливается FK, но без каскадного удаления.
20 июл 09, 16:06    [7436548]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
Glory
Member

Откуда:
Сообщений: 104760
CmeTanka
Джонни Кейдж
Есть у меня процедурка одна - каскадно удаляет записи в дочерних таблицах при удалении записей в родительской (в т.ч. и в ситуации, когда дочерние таблицы имеют своих "дочек").

Может, это то, что нужно?


А вы знаете, что sql server позволяет удалять автоматом подчинённые записи? Достаточно у связи в диаграмме поставить Delete rule в Cascade

И не нужно никаких костылей в виде хран процедур.

А потом другая звезда говорит этой - ты случайно не знаешь, куда из программы пропали все мои документы.
20 июл 09, 16:14    [7436593]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62917
Запретить удалять мастер запись.

--
http://www.podgoretsky.com
20 июл 09, 16:17    [7436613]     Ответить | Цитировать Сообщить модератору
 Re: удаление строк  [new]
Zvez_DA
Member

Откуда: Москва
Сообщений: 68
Спасибо)))как всегда мне помогли!
20 июл 09, 16:35    [7436726]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить