Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Триггер проверки postgresql / 5 сообщений из 5, страница 1 из 1
10.04.2016, 17:07
    #39211968
linali
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер проверки postgresql
Добрый день! Предполагается, что на сервере спроектирована база данных, согласно приложенной в фото модели... Необходимо на языке sql создать такую триггерную функцию, которая могла бы проверять, что выдаваемая именно сейчас книга (положим, код выдачи) могла быть выдана, что общее количество экземпляров именно на ней не закончилось. Изначально я вставляла проверку такого вида: сравнивала код экземпляра с общим количеством экземпляров, если код экземпляра превышал общее количество, происходил откат транзакции. Но преподавателя такой вариант не устроил, потому что злоумышленник может иметь доступ к нашей базе и менять вручную id-шники книг (ну сами коды экземпляров)... Как тогда организовать корректную проверку? У меня была мысль создать отдельную переменную counter для удобства... Но я не знаю, как всё это правильно организовать.. может, у кого-то есть мысли? Буду благодарна
...
Рейтинг: 0 / 0
11.04.2016, 15:01
    #39212633
Lonepsycho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер проверки postgresql
linali,

создавайте индекс на "Выданные книги", по "Код книги", где "Дата возврата" IS NULL. тогда постгресу будет легче считать количество выданных книг. ну и проверяйте сколько выданных на данный момент SELECT count("Код экземпляра") FROM "Выданные книги" WHERE "Дата возврата" IS NULL AND "Код книги" = ?;

P.S.
имена полей базы данных не для чтения юзверем, да и запросы читаются както не натурально. так что создавайте поля на международном языке програмирования, коим по факту является английский.
...
Рейтинг: 0 / 0
11.04.2016, 15:06
    #39212646
Lonepsycho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер проверки postgresql
linali,

хотя, если уж злоумышленик может влезть в БД, тогда решений наверное нет. злоумышленник может поменять количество экземпляров в таблице книга. да и вообще, если уж он в БД, да ещё и имеет права менять что либо, ефективность проверок и перепроверок уже под вопросом.
...
Рейтинг: 0 / 0
11.04.2016, 17:23
    #39212883
big-trot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер проверки postgresql
Преподаватель, (я так думаю) имел в виду, что факт выдачи - это код книги + дата выдачи не NULL + дата возврата NULL. Требуется посчитать количество записей удовлетворяющих данному условия и сравнить с общим количеством.

Честно говоря схема вызывает много вопросов. Например дата выдачи NULL, а дата возврата NULL.
...
Рейтинг: 0 / 0
13.04.2016, 01:09
    #39214181
Author the new one
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер проверки postgresql
linali,

автор если код экземпляра превышал общее количество
"Курить я буду, но пить не брошу". Какой-то странный подход, я не понимаю, как такое может быть.

Вообще-то тут надо уникальный ключ на экземпляры с датой возврата is null.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Триггер проверки postgresql / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]