|
2 / 2 / 0
Регистрация: 26.05.2020
Сообщений: 331
|
|
Как сделать проверку на добавление записи в БД13.05.2021, 14:29. Показов 5712. Ответов 42
Метки нет (Все метки)
У меня есть таблица расписание (raspisanie) куда я добавляю запись о каком-либо занятий группы. И мне нужно как-то сделать проверку на то, чтобы один преподаватель не мог вести в одинаковое время 2 пары. И ещё, чтобы нельзя было добавлять занятие для группы, если например у этой группы уже есть занятие в это время. Время получается из (id_day(это день недели) и id_para(это время пары)). Преподаватель может преподавать несколько дисциплин, и он указан в таблице discipline_academic как id_teacher. Помогите пожалуйста.
0
|
|
| 13.05.2021, 14:29 | |
|
Ответы с готовыми решениями:
42
Как сделать проверку на свободное время для записи в Yii2? Как сделать добавление записи через ADOTable?
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 13.05.2021, 16:06 | |
|
Тут несколько решений.
1. Создание на сервере для таблицы уникальных индексов. 2. Алгоритм модификации/добавления вложить в бизнес-логику сервера на уровне хранимой процедуры или триггера. В обоих случаях ловить с клиента (Вашего приложения) эксепшины сервера в коде создания и отсылки запросов на изменение/добавление 3. В самом приложении перед модификацией/добавлением записи посылать запрос на выборку записи с такими же значениями критичных полей и, если найдена, то ругаться и ничего не изменять/добавлять. Тут небольшая хитрость: и проверку, и запись в БД если проверка была успешной (нет записи с "дублированием") нужно отсылать на сервер в одной транзакции. Добавлено через 5 минут И Вы не написали самого главного - каким образом Вы реализуете отправку на сервер новых/измененных записей. Если через адаптер (т.е. изменения делаются в гриде), то все грустно. Ибо Вам придется при выборе метода 3 (а что-то мне подсказывает, что ни триггеры, ни уникальные индексы Вы писать не будете) накручивать логику по событиям датасета грида ибо, насколько я знаю, штатные методы адаптера (Update, Insert) не позволяют вместо запросов писать целые скрипты, в который еще и поднимаются на сервере исключения.
1
|
|
|
2 / 2 / 0
Регистрация: 26.05.2020
Сообщений: 331
|
|
| 13.05.2021, 16:24 [ТС] | |
|
MsGuns, Ничего не понял, но очень интересно
0
|
|
|
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
|
||
| 13.05.2021, 16:49 | ||
|
0
|
||
|
112 / 110 / 30
Регистрация: 08.05.2021
Сообщений: 485
|
||||
| 13.05.2021, 17:31 | ||||
|
0
|
||||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 13.05.2021, 17:41 | |
|
mashmed135, Это все хорошо, но где Ваши рекомендации, как решить эту проблему при условии, что приложение сооружалось на 90% в конструкторе и с редактируемым гридом ?
0
|
|
|
112 / 110 / 30
Регистрация: 08.05.2021
Сообщений: 485
|
||
| 13.05.2021, 17:53 | ||
|
0
|
||
|
2 / 2 / 0
Регистрация: 26.05.2020
Сообщений: 331
|
|
| 13.05.2021, 18:21 [ТС] | |
|
Ребят, а что делать то в итоге? Может кто максимально для тупых объяснить, как действовать.
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 13.05.2021, 18:23 | |
|
0
|
|
|
112 / 110 / 30
Регистрация: 08.05.2021
Сообщений: 485
|
|||||||
| 13.05.2021, 18:25 | |||||||
0
|
|||||||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|||
| 13.05.2021, 18:29 | |||
|
1. Ничего не делать, бросить программирование нафиг. А пойти, например, в сапожники или пирожники. 2. Набраться терпения и начать изучать что-нибудь кроме "методичек" Ваших "преподов". Добавлено через 3 минуты
1
|
|||
|
2 / 2 / 0
Регистрация: 26.05.2020
Сообщений: 331
|
||||||
| 13.05.2021, 18:29 [ТС] | ||||||
|
mashmed135, Можно комментарии к этому? Что это делает и куда его пихать непосредственно в приложении на С#?
0
|
||||||
|
112 / 110 / 30
Регистрация: 08.05.2021
Сообщений: 485
|
||
| 13.05.2021, 18:29 | ||
|
0
|
||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
||
| 13.05.2021, 18:31 | ||
|
Добавлено через 45 секунд danhiroman, О Вам чушь предложил, к тому же для постргеса,У Вас же сервер другой ?
0
|
||
|
112 / 110 / 30
Регистрация: 08.05.2021
Сообщений: 485
|
|||
| 13.05.2021, 18:32 | |||
|
0
|
|||
|
2 / 2 / 0
Регистрация: 26.05.2020
Сообщений: 331
|
|
| 13.05.2021, 18:32 [ТС] | |
|
MsGuns, MS SQL server
0
|
|
|
112 / 110 / 30
Регистрация: 08.05.2021
Сообщений: 485
|
|||
| 13.05.2021, 18:35 | |||
|
0
|
|||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|||
| 13.05.2021, 18:42 | |||
|
Идея же ограничения (CONSTRAINT) на проверку уникальности значений совокупности полей таблицы, дополняющее правила бизнес-логики любого SQL-сервера, высказанная в [2] п.1, реализуется в MS SQL несколько по-другому. Как - читайте в документации мелкомягких. Все правила БЛС (бизнес-логики сервера) действуют абсолютно независимо от приложений, которые с ним (сервером) работают. Т.е. ни студия, ни шарп к этому отношения не имеют. Если, конечно, сами они не создают БД (EF Code First например) Добавлено через 1 минуту Не по теме: Все с тобою понятно :)
0
|
|||
|
112 / 110 / 30
Регистрация: 08.05.2021
Сообщений: 485
|
||
| 13.05.2021, 18:49 | ||
|
Так же видно, что дошколёнок уже выдрессированный - сразу понял, что против меня шансов у него никаких и даже не пытался родить хоть какое-то решение, ограничившись перепастой прочитанного в интернете ранее. Забавно на ятом фоне смотрятся пассажи про "ясно". Скучно.
0
|
||
|
14303 / 9388 / 1354
Регистрация: 21.01.2016
Сообщений: 35,392
|
||
| 14.05.2021, 05:53 | ||
|
danhiroman, тут народ спорит о корректном решении в условиях конкурентного доступа к базе. А вы хотя бы банальный запрос на SQL написать можете? Чтобы хотя бы просто проверить наличие пары на определённую дату с определённым преподом?
0
|
||
| 14.05.2021, 05:53 | |
|
Помогаю со студенческими работами здесь
20
Подскажите как сделать форму добавление записи в DBGrid Как сделать добавление/редактирование/удаление записи в dbgrid? Как сделать добавление записи через запрос в Access Как сделать проверку на пустую строку и проверку что в слове нет повторяющихся букв Как добавлять записи в файл, делая проверку на пустые записи Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|