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

Есть таблица, к которой по ключу могут быть привязаны таблицы (их число может расти со временем), где не указано "ON DELETE CASCADE". И при удалении такой записи будет исключение.


Можно ли проверить возможность удаления записи?
13 ноя 14, 15:52    [16841077]     Ответить | Цитировать Сообщить модератору
 Re: Возможность на проверку удаления записи.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Не пугайтесь исключений, они не кусаются. Просто обработайте его.
13 ноя 14, 15:56    [16841117]     Ответить | Цитировать Сообщить модератору
 Re: Возможность на проверку удаления записи.  [new]
igor888
Guest
В том то и дело, оно лезет в клиентское приложение... Использую только вызов хранимых процедур...

может есть в TSQL что-то подобное как в дельфях?
try

except

end
13 ноя 14, 16:19    [16841345]     Ответить | Цитировать Сообщить модератору
 Re: Возможность на проверку удаления записи.  [new]
_djХомяГ
Guest
Есть начиная с версии >=2005
13 ноя 14, 16:21    [16841360]     Ответить | Цитировать Сообщить модератору
 Re: Возможность на проверку удаления записи.  [new]
Glory
Member

Откуда:
Сообщений: 104760
igor888
В том то и дело, оно лезет в клиентское приложение...

Ну так клиентское приложение разве не должно узнать о невозможности удаления ?
13 ноя 14, 16:24    [16841399]     Ответить | Цитировать Сообщить модератору
 Re: Возможность на проверку удаления записи.  [new]
igor888
Guest
Glory,

При желании динамическое разрастание можно и в клиенте предусмотреть, но хочется на сервере...

_djХомяГ ,

использую SQL2008, подскажи что есть то?
13 ноя 14, 16:32    [16841487]     Ответить | Цитировать Сообщить модератору
 Re: Возможность на проверку удаления записи.  [new]
Glory
Member

Откуда:
Сообщений: 104760
igor888
При желании динамическое разрастание можно и в клиенте предусмотреть, но хочется на сервере...

Т.е. хочется, чтобы приложение/клиент никогда не узнали про невозможность удаления что ли ?
13 ноя 14, 16:33    [16841496]     Ответить | Цитировать Сообщить модератору
 Re: Возможность на проверку удаления записи.  [new]
igor888
Guest
Glory,

Вот именно, клиентская часть и получит уведомление о невозможности удаления записи, только как это проверить со стороны сервера?

повторюсь, связка может разрастаться (динамика)... хотелось бы написать общий вариант обработки а не возвращаться к этому делу постоянно
13 ноя 14, 16:48    [16841635]     Ответить | Цитировать Сообщить модератору
 Re: Возможность на проверку удаления записи.  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
igor888
использую SQL2008, подскажи что есть то?


есть блок try/catch
13 ноя 14, 16:49    [16841652]     Ответить | Цитировать Сообщить модератору
 Re: Возможность на проверку удаления записи.  [new]
Glory
Member

Откуда:
Сообщений: 104760
igor888
клиентская часть и получит уведомление о невозможности удаления записи,

Интересно, а каким способом эта клиентская часть получить уведомление, если она уже сейчас ен умеет обрабатывать уведомления ?
13 ноя 14, 16:50    [16841669]     Ответить | Цитировать Сообщить модератору
 Re: Возможность на проверку удаления записи.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
igor888
И при удалении такой записи будет исключение.


И это правильно. Вы же этого захотели, следовательно, Вы же и должны принять меры по исключению такого варианта удаления.

igor888
Можно ли проверить возможность удаления записи?


Можно, напишите проверочный запрос. Вы же понимаете, почему появляется ошибка при NONE?
13 ноя 14, 17:14    [16841824]     Ответить | Цитировать Сообщить модератору
 Re: Возможность на проверку удаления записи.  [new]
igor888
Guest
Владислав Колосов
igor888
И при удалении такой записи будет исключение.


И это правильно. Вы же этого захотели, следовательно, Вы же и должны принять меры по исключению такого варианта удаления.

igor888
Можно ли проверить возможность удаления записи?


Можно, напишите проверочный запрос. Вы же понимаете, почему появляется ошибка при NONE?



Спасибо, не совсем понял про NONE... и как будет выглядеть проверочный код?
Хотя скорей всего Вы про try/catch
13 ноя 14, 17:19    [16841863]     Ответить | Цитировать Сообщить модератору
 Re: Возможность на проверку удаления записи.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
igor888
как будет выглядеть проверочный код?
Да просто делаете запрос:
if exists(select * from таблица_из_которой_удаление join таблица_которая_связана on условия_связывания)
begin
    то ошибка
end
13 ноя 14, 17:22    [16841884]     Ответить | Цитировать Сообщить модератору
 Re: Возможность на проверку удаления записи.  [new]
igor888
Guest
alexeyvg,

Нюанс, таблица может быть создана в динамике и связана в условиях "ON DELETE CASCADE".
Теперь вот думаю, либо try/catch (на мой взгляд кривой подход как турецкая сабля), либо постоянно переписывать процедуру проверки удаления записи...
13 ноя 14, 17:25    [16841906]     Ответить | Цитировать Сообщить модератору
 Re: Возможность на проверку удаления записи.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Там 'NO ACTION', ошибся.
13 ноя 14, 17:28    [16841930]     Ответить | Цитировать Сообщить модератору
 Re: Возможность на проверку удаления записи.  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
igor888
alexeyvg,

Нюанс, таблица может быть создана в динамике и связана в условиях "ON DELETE CASCADE".
Теперь вот думаю, либо try/catch (на мой взгляд кривой подход как турецкая сабля), либо постоянно переписывать процедуру проверки удаления записи...
А ещё у неё, небось, могут быть триггеры,
в которых удаляются записи из таблиц, на которые тоже ссылаются какие-нибудь таблицы...
В общем случае ваш сервер будет заниматься только проверкой возможности удаления записи из таблицы!
13 ноя 14, 17:28    [16841933]     Ответить | Цитировать Сообщить модератору
 Re: Возможность на проверку удаления записи.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Так не создавайте таблицы динамически, это противоестественно.
Сразу планируйте структуры данных.
13 ноя 14, 17:30    [16841940]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить