powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Нужна помощь в написании триггера
8 сообщений из 33, страница 2 из 2
Нужна помощь в написании триггера
    #39298440
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

Не увидел. Скинь на почту, будет быстрее
...
Рейтинг: 0 / 0
Нужна помощь в написании триггера
    #39298487
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,
В топике ничего нет, во-первых. Только первичный ключ. ФК на хозяина предполагается, что логично. Но вот уникальность флагов для конкретного фк - это как?
...
Рейтинг: 0 / 0
Нужна помощь в написании триггера
    #39298525
Andrey_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДокAndrey_Уж лучше в приложение :)
А потом какой-нибудь дурак вручную поправит базу, а приложение или сильно задумается при выборке, или возьмет первую, формально подходящую, запись. И будут вопли, что все работает неправильно :)Далеко тебя занесло.
Перед тем как выдвигать такие гипотезы, нужно ответит минимум на один вопрос (как минимум самому себе как product-owner-у): "система должна быть готова к тому, что в нее полезу снаружи и будут менять данные?"
Если нет - в общем случае не важно как будет реализовано обновление адресов, через тригер, бизнес-логику клиента или как-нибудь астрально.
Если да - желательно в БД сделать свой АПИ (в виде набора хранимок/тригеров/вьюх контролирующих корректность поступающих данных) и через него работать с БД из своего приложения. А прямой доступ к таблицами забрать полностью (ну или select оставить, так и быть уж). Это нужно чтобы когда сторонние приложения начнут лазить в твою БД своими грязными рученками, они лазили по тому же интерфейсу, что и твое приложение. В результате будет гораздо меньше трудозатрат на поддержку внешнего интерфейса БД.

Но это всё весьма сферически. На своей практике вторую модель взаимодействия с БД я встречал только в банках (да и то очень фрагментарно). Все остальные учетные системы с этим не заморачивались и были полностью открыты для сторонних приложений. Максимум - не большой АПИ для интеграций, который не замещает общий доступ к ресурсам, а делает его чуть более удобным.

P.S. А еще, в качестве минимальной защиты себя от "дурачка вручную правящего базу" можно сделать логирование. Это формально защитит тебя как разработчика от нападок клиентов, но не защитит клиентов от ошибок.
...
Рейтинг: 0 / 0
Нужна помощь в написании триггера
    #39298555
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXIДок,
В топике ничего нет, во-первых. Только первичный ключ. ФК на хозяина предполагается, что логично. Но вот уникальность флагов для конкретного фк - это как?
"Уникальность" флагов для одного фк при помощи триггера и была темой этого топа. Ты о чем вообще?
...
Рейтинг: 0 / 0
Нужна помощь в написании триггера
    #39298573
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,
Я о том, что триггер не обрабатывает ситуацию когда оба флага сняты. И где эта обработка не ясно. Мне просто интересно, как Вы защищаетесь от этого? Как вариант, конечно, пусть все записи без флагов. Но мне и это не понятно - записи есть, а результат получить невозможно.
...
Рейтинг: 0 / 0
Нужна помощь в написании триггера
    #39298605
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey_,

>> Далеко тебя занесло

Я не технарь, но в любом деле есть базовые понятия.

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

Логирование - это способ протоколирования изменений и к "защите от дурака" имеет весьма отдаленное отношение ;)
...
Рейтинг: 0 / 0
Нужна помощь в написании триггера
    #39298628
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXIДок,
Я о том, что триггер не обрабатывает ситуацию когда оба флага сняты. И где эта обработка не ясно. Мне просто интересно, как Вы защищаетесь от этого? Как вариант, конечно, пусть все записи без флагов. Но мне и это не понятно - записи есть, а результат получить невозможно.
А-а-а. .. Вот ты о чем :)

У меня задача практическая. Мне нужна не абстрактная уникальность, а уникальность True флагов поля в пределах одного фк

Зы. Засим, думаю тему можно закрыть.
...
Рейтинг: 0 / 0
Нужна помощь в написании триггера
    #39298685
Andrey_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДокНасколько я для себя уяснил, имеющиеся в сервере механизмы контроля изменения данных - это и есть защита от дурака. И реализовать их можно различными способами. И этот контроль почти никак не должен зависеть от логики прикладной программы.
Сферически - да. Практически - а оно надо? Это тот самый вопрос "система должна быть готова к тому, что в нее полезу снаружи и будут менять данные?". В данном случае система - это комплекс из БД и прикладного приложения. Ты таки попробуй ответить себе на этот вопрос. Возможно в результате пропадет много других вопросов... или наоборот - появится :)
ДокЛогирование - это способ протоколирования изменений и к "защите от дурака" имеет весьма отдаленное отношение ;)Зависит от того, кого мы хотим защитить и от чего. Если пользователя чтобы он глупости не делал, то да, обычно логи плохо помогают... Пока руководителю пользователя не покажешь красивое окошко в котором написано когда и как товарищь Пупкин поставил эту злощастную галочку.
А если хотим защитить себя от поиска несуществующей ошибки, или злонамеренных действий одного из пользователей - вполне работает.
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Нужна помощь в написании триггера
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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