0 / 0 / 0
Регистрация: 16.11.2013
Сообщений: 24
|
|
1 | |
Хранимая процедура для удаления17.10.2015, 14:45. Показов 5245. Ответов 8
Метки нет Все метки)
(
Добрый день! У меня есть таблицы, которые заполнены сгенерированными данными. Нужно написать хранимую процедуру, суть которой в том, что если один и тот же сноуборд с одним и тем же id взяли в один период несколько раз ( то есть сноуборд уже в прокате, и его выдают еще раз), то удалить вторую запись. Подскажите, пожалуйста, с помощью чего реализовать, потому что никаких хороших идей нет. Заранее спасибо!
0
|
|
17.10.2015, 14:45 | |
Ответы с готовыми решениями:
8
Триггер или хранимая процедура для удаления? хранимая процедура удаления Хранимая процедура для добавления
|
624 / 495 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
|
|
17.10.2015, 19:21 | 2 |
Лучше не создавать вторую запись, чем потом удалять.
Добавление записей только через процедуру, ручную вставку закрыть. В процедуре проверять ужевыданность доски в интересующий период. В случае чего делать RAISERROR, в клиентском приложении обработать. Модификацию тоже только через процедуру с проверкой. голые id переименовать в id_prokat итд. Так удобнее писать запросы. Альтернативный способ - можно триггер повесить на таблицу prokat, который будует проверять INSERT \ UPDATE (instead of), и если что генерировать исключение. То есть проверку унести в триггер. Но записывать лучше всё равно через процедуру.
1
|
3365 / 2061 / 736
Регистрация: 02.06.2013
Сообщений: 5,048
|
|||||||||||||||||
17.10.2015, 22:32 | 3 | ||||||||||||||||
Возьмем пример:
Какие строки нужно удалить и почему?
1
|
0 / 0 / 0
Регистрация: 16.11.2013
Сообщений: 24
|
|
18.10.2015, 07:38 [ТС] | 4 |
В моей базе наверное немного проще, там сноуборды выдаются на день или несколько дней, поэтому время не учитывается. Но разницы же особой нет?
Удаляем только вторую строку, так как сноуборд уже был взят, но его прокат еще не закончился(строка 1), и выдать в прокат мы его не можем. А 3-ю строку оставляем, потому что в 11-30 сноуборд уже находится в пункте проката и его можно выдавать.
0
|
1635 / 1136 / 171
Регистрация: 23.07.2010
Сообщений: 6,730
|
|
18.10.2015, 12:08 | 5 |
IMHO подход в корне не верный. Исторические данные на то и исторические данные, что бы их хранить. А уж позаботиться об оптимальной выборке - это уже совсем другой вопрос.
1
|
0 / 0 / 0
Регистрация: 16.11.2013
Сообщений: 24
|
|
18.10.2015, 13:16 [ТС] | 6 |
Добавлено через 1 минуту
Знаю, но ситуация сложилась так, что нужно удалить из базы "неверные "записи. А в дальнейшем, да, реализую триггер на ввод данных для проверки возможности выдачи сноуборда.
0
|
3365 / 2061 / 736
Регистрация: 02.06.2013
Сообщений: 5,048
|
||||||
18.10.2015, 15:22 | 7 | |||||
![]() Решение
Одна из задач, где уместно воспользоваться курсором.
1
|
0 / 0 / 0
Регистрация: 16.11.2013
Сообщений: 24
|
|
18.10.2015, 15:24 [ТС] | 8 |
0
|
1635 / 1136 / 171
Регистрация: 23.07.2010
Сообщений: 6,730
|
|
18.10.2015, 16:35 | 9 |
0
|
18.10.2015, 16:35 | |
18.10.2015, 16:35 | |
Помогаю со студенческими работами здесь
9
Хранимая процедура для update
Хранимая процедура для извлечения таблиц Хранимая процедура для создания рандомизированного иерархического списка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |