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

Вниз

Что такое тригер в БД и для чего он предназначен?   Найти похожие ветки 

 
Гость22   (2005-09-15 21:55) [0]

И обязательно ли его исспользование?


 
Anatoly Podgoretsky ©   (2005-09-15 22:01) [1]

Выполнения дополнительных действий на сервере для INSERT/UPDATE/DELETE


 
Гость22   (2005-09-15 22:12) [2]

а подробнее можно? (для новичков ведь)


 
Marser ©   (2005-09-15 23:58) [3]

В сновном, для реализации бизнес-правил на сервере.


 
Defunct ©   (2005-09-16 06:53) [4]

Гость22   (15.09.05 22:12) [2]

пример с автоинкрементом пойдет?
http://alexey-academic.newmail.ru/faq/db0087.html


 
Sergey13 ©   (2005-09-16 09:18) [5]

2[1] Anatoly Podgoretsky ©   (15.09.05 22:01)
Иногда и на другое.

2Гость22   (15.09.05 21:55)
Тригер нужен для запуска программы по событию в БД. Событием может быть как модификация данных DML так и (в некоторых БД) DDL или например открытие сессии или тому подобное.


 
msguns ©   (2005-09-16 10:16) [6]

Триггеры, как и хранимые процедуры, используют 2 основные цели:

1. Возможность написания сложных алгоритмов выборок или обновления данных (часто с задействованием большого кол-ва таблиц) "чисто на сервере", что делает программирование клиентских приложений, во-первых, языково (платформо) независимым, во-вторых существенно проще. К тому же для правки этих алгоритмов (бизнес-логики) не требуется никаких изменений в клиентском ПО. В солидных конторах имеется даже спец. "серверное" подразделение, в котором работают, как правило, одни сиквельщики (эскюэльщики). Проблемным программистам не надо беспокоиться, КАК изменяемые им ОБЪЕКТЫ БД будут модифицированы в БД и даже в каких таблицах находятся его части,- все это за него опредедляет админ БД, в виде триггеров, ХП, представлений и т.д.

2. Существенное снижение трафика и повышение скорости обработки данных. Т.к.все сложные многоступенчатые изменения (есть алгоритмы, за раз делающие изменения в десятках и даже сотнях таблиц БД) делаются собственно на сервере (т.е. не гоняются по сетке и не переписываются с винта на винт между ПК), клиентские приложения, запускаемые даже на небыстрых компах "летают". Особый эффект такое распределение нагрузки виден при наличии медленной сети или вообще при модемном коннекте.


 
Sergey13 ©   (2005-09-16 10:44) [7]

2[6] msguns ©   (16.09.05 10:16)
ИМХО цель у них одна - вынесение логики на сервер. Все остальное - побочные эфекты. 8-)

>Проблемным программистам не надо беспокоиться, КАК изменяемые им ОБЪЕКТЫ БД будут модифицированы в БД и даже в каких таблицах находятся его части,- все это за него опредедляет админ БД, в виде триггеров, ХП, представлений и т.д.

Какое отношение админ имеет к ХП и тригерам? В идеале он должен просто следить за их работоспособностью и все (не исключая рекомендаций программерам ессно). ИМХО.


 
Anatoly Podgoretsky ©   (2005-09-16 10:53) [8]

Гость22   (15.09.05 22:12) [2]
Так вопрос нужен по подробнее, пока ответ соответствует вопросу и дальнейшее требует уточнения с твоей стороны. Может тебе и той информации с избытком хватило.


 
msguns ©   (2005-09-16 10:55) [9]

>Sergey13 ©   (16.09.05 10:44) [7]
>Какое отношение админ имеет к ХП и тригерам? В идеале он должен просто следить за их работоспособностью и все (не исключая рекомендаций программерам ессно). ИМХО.

Я же написал "в солидных конторах". Вот например, я знаю несколько заводов, где установлено на 2, и даже не 4 СУБД и с полсотни БД на разных серверах. И существуют спец.подразделение, которое занимается не только резервным-копированием и т.д., но и собственно разработкой бизнес-логик БД. Там есть "скалолазы", "мускульщики", "орки" и т.д., специализирующиеся на "своих" серверах.
Все проблемные программные подразделения, разрабатывая ПО, согласовываю их с "админами", после чего те вносят (если нужно) соответствующие изменения в бизнес-логику базы.


 
Anatoly Podgoretsky ©   (2005-09-16 10:55) [10]

Sergey13 ©   (16.09.05 09:18) [5]
В корне неверно, конечно возможность запуска программы существует, но это скорее экзотика, главное что есть событие и возможность его пост/пред обработки, а программы это побочное.


 
Anatoly Podgoretsky ©   (2005-09-16 10:57) [11]

Marser ©   (15.09.05 23:58) [3]
Именно в основном, но не только, могут быть просто административные функции, например ведение логов. Оповещение службы безопасности о крысах. К бизнес правилам это отношения не имеет


 
Sergey13 ©   (2005-09-16 11:00) [12]

2 [10] Anatoly Podgoretsky ©   (16.09.05 10:55)
А ХП или содержание тригера это не программа? Я не об EXE-шниках писал разумеется.


 
Sergey13 ©   (2005-09-16 11:03) [13]

2[9] msguns ©   (16.09.05 10:55)
Ну дык программер серверной части - это все равно программер, а не админ. Есть вообще разработчики интерфейсов. Так им БД вообще по барабану. 8-)


 
Anatoly Podgoretsky ©   (2005-09-16 11:44) [14]

Sergey13 ©   (16.09.05 11:00) [12]
А ХП или содержание тригера это не программа? Я не об EXE-шниках писал разумеется.
ХП это хранимая процедура, не программа.
Тригер тоже процедура вызываемая по событию.

А вот насчет разумеется не получается.


 
Sergey13 ©   (2005-09-16 11:51) [15]

2 [14] Anatoly Podgoretsky ©   (16.09.05 11:44)
Т.е. ты считаешь, что обозвать часть программы (процедуру) программой это недопустимо в приличном обществе? 8-)


 
msguns ©   (2005-09-16 12:26) [16]

>Sergey13 ©   (16.09.05 11:51) [15]
>Т.е. ты считаешь, что обозвать часть программы (процедуру) программой это недопустимо в приличном обществе? 8-)

В принципе можно программой можно назвать любую жестко заданную последовательность каких-то действий или событий. Например, телепрограмма. Или Программа КПСС.

Макросы ведь никто не называет программой. Так же как и скрипты. Не случайно ведь им придумали спец.названия.

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


 
Sergey13 ©   (2005-09-16 12:36) [17]

2[16] msguns ©   (16.09.05 12:26)
>В принципе можно программой можно назвать любую жестко заданную последовательность каких-то действий или событий.

Вот из этого я и исходил в своих утверждениях.
А о чистоте терминов можно долго спорить.


 
Anatoly Podgoretsky ©   (2005-09-16 13:11) [18]

Sergey13 ©   (16.09.05 12:36) [17]
О чистоте можно не спорит, пока не искажается суть. Я понял тебя одназначно, как запуск программы. Термин четкий и связан с понятием процесс, но еще шире.


 
Anatoly Podgoretsky ©   (2005-09-16 13:15) [19]

Очень неосмотрительно ты произнес это слово


 
msguns ©   (2005-09-16 13:33) [20]

Серега, когда твоя матушка собирается сделать шопинг, она явно пишет список того, что надо купить. Этот список, по твоему "широкому" определению вполне можно назвать программой.
Но ведь ты не считаешь ее программистом ?


 
Sergey13 ©   (2005-09-16 13:36) [21]

2[19] Anatoly Podgoretsky ©   (16.09.05 13:15)
Ну замени мой пост на
Удалено модератором.
8-)


 
msguns ©   (2005-09-16 13:39) [22]

Другой пример. Интерпретаторы.
Это собственно программы, на вход которым подается некий текст, написанный на определенном языке (скрипт) и они этот скрипт выполняют шаг за шагом в точности следуя инструкциям (операторам) текста (скрипта).

Однако сам по себе текст не является более ничем иным, чем просто текстом, т.е.файлом, данные которого, "поднесенные" к процессору напрямую (без интерпретатора), вызовут у того рвоту (прерывание) с поносом (останова задачи системой).
Видимо, Анатолий и имел в виду нечто подобное.


 
Sergey13 ©   (2005-09-16 13:55) [23]

2[20] msguns ©   (16.09.05 13:33)
>Но ведь ты не считаешь ее программистом ?
Почему не считаю? Я ее прямо так и спрашиваю: "Матушка, ты выполнила программу?". 8-)


 
msguns ©   (2005-09-16 14:23) [24]

>Sergey13 ©   (16.09.05 13:55) [23]
>Почему не считаю?

Ну тогда, учитывая, что она ходит по магазинам систематически, надо ее называть системным программистом
;)


 
Sergey13 ©   (2005-09-16 14:38) [25]

2 [24] msguns ©   (16.09.05 14:23)
Админ!!! Адназначна!!! 8-)


 
Гость22   (2005-09-17 11:05) [26]

Позвольте, уважаемые Мастера, вас прервать и, все таки, возвратиться к тригерам.
Насколько я понял, они используются в больших БД, где много таблиц и запись/обновление происходит в несколько таблиц одновременно.
Я не понял главного - что по своей физической сути тригер: процедура (как часть программы), какая-то команда сервера СУБД (извиняюсь за возможно тупой вариант) или часть определенной таблицы (поле, запись)???
И если у меня БД состоит из 8-10 таблиц под упр. FireBird, нужно ли мне использовать тригер?

Спасибо!


 
Anatoly Podgoretsky ©   (2005-09-17 14:09) [27]

Гость22   (17.09.05 11:05) [26]
Они никак не связаны с размером БД и количеством таблиц, со вторым вообще никак не связаны, И не связаны с записью в несколько таблиц одновременно. Они связаны только с одним с событием!
Как они устроены физически, зависит от сервера и не должно волновать программиста БД.
Нужно ли тебе использовать триггер зависит только от логики, но не от сервера и количество таблиц.


 
Anatoly Podgoretsky ©   (2005-09-17 14:12) [28]

Sergey13 ©   (16.09.05 13:36) [21]
Это у тебя должно быть в мозгах на уровне генотипа, сам себе модератор.



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

Форум: "Начинающим";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.035 c
2-1126707473
Anton22
2005-09-14 18:17
2005.10.16
StatusBar


1-1127469976
tyo
2005-09-23 14:06
2005.10.16
Z-ордер окошек


1-1127819167
Jioniro
2005-09-27 15:06
2005.10.16
Dll как хранилище иконок


14-1127282930
DVM
2005-09-21 10:08
2005.10.16
Система для защищенного обмена документами в сети организации


5-1101362935
diabolik_krsk
2004-11-25 09:08
2005.10.16
Помогите с наследником DBGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский