|
|
|
Триггер проверки postgresql
|
|||
|---|---|---|---|
|
#18+
Добрый день! Предполагается, что на сервере спроектирована база данных, согласно приложенной в фото модели... Необходимо на языке sql создать такую триггерную функцию, которая могла бы проверять, что выдаваемая именно сейчас книга (положим, код выдачи) могла быть выдана, что общее количество экземпляров именно на ней не закончилось. Изначально я вставляла проверку такого вида: сравнивала код экземпляра с общим количеством экземпляров, если код экземпляра превышал общее количество, происходил откат транзакции. Но преподавателя такой вариант не устроил, потому что злоумышленник может иметь доступ к нашей базе и менять вручную id-шники книг (ну сами коды экземпляров)... Как тогда организовать корректную проверку? У меня была мысль создать отдельную переменную counter для удобства... Но я не знаю, как всё это правильно организовать.. может, у кого-то есть мысли? Буду благодарна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2016, 17:07 |
|
||
|
Триггер проверки postgresql
|
|||
|---|---|---|---|
|
#18+
linali, создавайте индекс на "Выданные книги", по "Код книги", где "Дата возврата" IS NULL. тогда постгресу будет легче считать количество выданных книг. ну и проверяйте сколько выданных на данный момент SELECT count("Код экземпляра") FROM "Выданные книги" WHERE "Дата возврата" IS NULL AND "Код книги" = ?; P.S. имена полей базы данных не для чтения юзверем, да и запросы читаются както не натурально. так что создавайте поля на международном языке програмирования, коим по факту является английский. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 15:01 |
|
||
|
Триггер проверки postgresql
|
|||
|---|---|---|---|
|
#18+
linali, хотя, если уж злоумышленик может влезть в БД, тогда решений наверное нет. злоумышленник может поменять количество экземпляров в таблице книга. да и вообще, если уж он в БД, да ещё и имеет права менять что либо, ефективность проверок и перепроверок уже под вопросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 15:06 |
|
||
|
Триггер проверки postgresql
|
|||
|---|---|---|---|
|
#18+
Преподаватель, (я так думаю) имел в виду, что факт выдачи - это код книги + дата выдачи не NULL + дата возврата NULL. Требуется посчитать количество записей удовлетворяющих данному условия и сравнить с общим количеством. Честно говоря схема вызывает много вопросов. Например дата выдачи NULL, а дата возврата NULL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 17:23 |
|
||
|
Триггер проверки postgresql
|
|||
|---|---|---|---|
|
#18+
linali, автор если код экземпляра превышал общее количество "Курить я буду, но пить не брошу". Какой-то странный подход, я не понимаю, как такое может быть. Вообще-то тут надо уникальный ключ на экземпляры с датой возврата is null. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 01:09 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=93&tid=1997296]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 322ms |

| 0 / 0 |
