Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];

Вниз

Запрет на удаление/изменение записи   Найти похожие ветки 

 
carmen   (2004-06-05 11:39) [0]

Емется база даных. Каждая запись в любой таблице имеет поле PERIOD. Как запретить удаление/изменение записи, если значение поля PERIOD меньше активного периода. Нужен пример

Заранее благодарен


 
Anatoly Podgoretsky ©   (2004-06-05 11:45) [1]

Не разрешать вообще удалять, а удалять хранимой процедурой


 
carmen   (2004-06-05 11:49) [2]

А через тригер както можно сделать


 
Анатолий Подгорецкий ©   (2004-06-05 11:52) [3]

Тоже можно


 
}{ander ©   (2004-06-05 12:12) [4]


> carmen   (05.06.04 11:49) [2]
> А через тригер както можно сделать


Нужно


 
carmen   (2004-06-05 22:40) [5]

А как сделать через тригер


 
Sergey Masloff   (2004-06-05 22:49) [6]

>А как сделать через тригер
if new.period < current_period then
 exception e_bad_period;

Но вообще см. Anatoly Podgoretsky ©   (05.06.04 11:45) [1]
так как есть мнение (и не только мое) что бизнес-логика в триггерах это не есть гуд. Все же лучше бы в ХП выносить - потому что и поддерживать проще и вообще...


 
Sergey Masloff   (2004-06-05 22:55) [7]

скобки забыл..
if (new.period < current_period) then
exception e_bad_period;

естественно exception надо объявить сначала


 
Курдль   (2004-06-06 00:47) [8]


> Но вообще см. Anatoly Podgoretsky ©   (05.06.04 11:45) [1]
>

Не засоряйте вы неокрепшие умы хранимыми процедурами! Я уже говорил, что чаще всего ХП - это роспись в собственном бессилии написать грамотный запрос. А в данном случае ХП не может быть гарантом целостности данных, в отличии от триггера. "Никогда не говори "никогда" в переводе на Программистский значит: "найдется такой ёлоб, который добавит запись в обход процедуры".


 
Sergey Masloff   (2004-06-06 02:18) [9]

Курдль   (06.06.04 00:47) [8]
Это решаемо. Во-первых права на запись в обход процедуры можно отобрать (как это обычно и делается). И никаких проблем.
>  Я уже говорил, что чаще всего ХП - это роспись в собственном >бессилии написать грамотный запрос
Ну, говорили вы явную чушь. ХП это прежде всего отличный способ обеспечения безопасности и управляемости системы, и очень удобный слой для размещения бизнес-логики. А бизнес логика в триггерах ИМХО допустима только в минимальных количествах - ну там проверить что дата не меньше текущей, что в фамилии нет цифр а возраст человека не более 150 лет... Кстати именно такого же мнения придерживаются и серьезные конторы занимающиеся независимым аудитом информационных систем - нам в силу специфики приходится эту процедуру (аудит) регулярно проходить. Вобщем, по этому вопросу мое мнение совпадает с аудиторами.
 И при чем здесь неокрепшие умы? Учиться сразу нужно правильным технологиям.


 
Курдль   (2004-06-06 10:30) [10]


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

Представьте себе ситуацию. Жил да был приличный такой проект, над которым трудился немалый коллектив. Сдали, поделили бабло и забыли. Проходит пару лет и созревает клиент, готовый купить этот проект, но с условием, что тот будет работать на другой СУБД. Вроде все Ок. А посмотрели - мать моя! Вся логика на сервере и ХЗ уже, как работает. Да еще с надо с T-SQL перевести на PL/SQL!
"Лучшая рыба - это колбаса", а лучшая ХП - это ANSI запрос!


 
Sergey Masloff   (2004-06-06 11:54) [11]

Курдль   (06.06.04 10:30) [10]
Да мифы это. Про перевод серьезного проекта содной платформы на другую. Такого НЕ БЫВАЕТ. Потому что для того и ивыбирается сервер чтобы МАКСИМАЛЬНО использовать его фичи под конкретную задачу. И те же ANSI запросы хинтовать придется совсем по-разному, да и работать все равно будет по-другому. А оставлять такую дыру как выполнение пользователем произвольных запросов... Ну уж нет.
 Впрочем, случаи и проекты бывают разные так что ни мои ни ваши слова как абсолютную истину воспринимать не советую никому.

 Про чушь вы (или ты - как удобнее) кстати извините - в пылу полемики ;-)


 
Сергей Суровцев ©   (2004-06-06 12:32) [12]

Система, вроде, многопользовательская, и логично, что активный период у каждого установлен свой. Значит ограничение и проверка должно быть еще на уровне интерфейса.


 
Petr V. Abramov ©   (2004-06-06 14:09) [13]

> Сергей Суровцев ©   (06.06.04 12:32) [12]
> Значит ограничение и проверка должно быть еще на уровне
> интерфейса.
 Это первый ряд окопов :) А потом в SP.

> Курдль   (06.06.04 10:30) [10]
> "Лучшая рыба - это колбаса",
 Это точно
> а лучшая ХП - это ANSI запрос!
 Как только дело выходит за рамки примеров из учебника по ANSI SQL, начинается либо использование всех возможностей SQL используемой СУБД, либо обработка на клиенте. Во втором случае приложение сразу теряет преимущества перед 1С, а о загубленном времени я говорить не буду.

> Вся логика на сервере и ХЗ уже, как работает.
 Вот если "вся логика на сервере", небольшой шанс разобраться, как работает, еще есть, а вот если на клиенте - тогда точно ХЗ.


 
Курдль   (2004-06-06 20:27) [14]


> Да мифы это. Про перевод серьезного проекта содной платформы
> на другую. Такого НЕ БЫВАЕТ.

Да не мифы это, а суровая действительность! Обращается клиент с посьбой провести автоматизацию его нелегкого бизнеса. Ислледования показывают, что данные еле шевелятся и с трудом накапливаются. Принимается решение (не без хныканья клиента о всеобщей дороговизне) поставить СУБД попроще. А потом всплывает аналогичная компания с аналогичными проблемами, но немеряным оборотом. Хорошо, конечно, сразу начинать любой проект на Оракле...


> А оставлять такую дыру как выполнение пользователем произвольных
> запросов... Ну уж нет.

А мож это не простой пользователь, а нач. отдела автоматизации, обиженный малым откатом? :)

В общем, - к теме использования ХП для реализации бизнес-логики.
Я двумя руками "за"! Но рекомендую сначала очень серьезно поискать другие варианты. Чаще всего многие проблемы с бизнес логикой возникают на этапе проектирования БД, а потом их пытаются исправить ХП и триггерами.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.043 c
6-1083774778
Art_Z
2004-05-05 20:32
2004.07.04
IP scanner


14-1087213952
Master
2004-06-14 15:52
2004.07.04
работа с dBase


6-1083668390
Checist [root]
2004-05-04 14:59
2004.07.04
Как вытащить Url-адресс из файла типа Ярлык Интернета?


1-1087726463
Delphi7
2004-06-20 14:14
2004.07.04
Почему не получаю реальный размер переменной?


3-1086694963
white
2004-06-08 15:42
2004.07.04
Как определить выбраную запись в НД и настроить...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский