Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
619 / 218 / 51
Регистрация: 22.11.2010
Сообщений: 1,781
Записей в блоге: 3
1

Когда был вызван триггер и где он располагается в логической схеме?

27.02.2015, 23:03. Показов 1492. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток.

В течение полугода задавался вопросом что такое "триггер", но все никак руки не доходили поискать/погуглить.

Все, что я понял из литературы в интернете, что триггер - хранимая процедура, своего рода подпрограмма на PL/SQL, которая вызывается при изменении таблицы базы данных.

Дальше мое понимание о триггерах оставляет желать лучшего.

Приведу пример,
--у меня открыта какая-нибудь таблица в БД, конкретно рассматривается Access.
--И хочу ввести некоторые коррективы в какой-нибудь из кортежей.
--Что делаю я - я просто стираю backspace'ом не нужные слова и печатаю другое,
--затем добавляю новый кортеж.
-- И после жму Сохранить.

А теперь вопрос -

--когда был вызван триггер и где он вообще располагается в логической схеме? (есть мнение что он где-то в концептуальном уровне).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2015, 23:03
Ответы с готовыми решениями:

Триггер, вызывающий процедуру, в которой выполняется select к этой таблице (откуда был вызван триггер)
есть тригерр create or replace trigger quickstart.quickstart.ACRIONS_COMMIT_TR after update on...

Открытие попап там, откуда он был вызван
Доброе утро! проблема с открытием попап под той ссылкой, откуда попап был вызван. сейчас он...

Как узнать откуда был вызван метод?
У меня после распознавания речи вызывается метод onActivityResult(). В нём речь преобразуется в...

Как в отладке выяснить, откуда был вызван метод
Ребят как узнать откуда был вызван метод? К примеру ставлю точку останова на метод onCreate во...

20
2842 / 774 / 41
Регистрация: 20.05.2012
Сообщений: 2,055
28.02.2015, 03:31 2
Примерно да. Например, они запоминают все сделанные к(в) базе запросы: запросы на изменение (Update, Insert...). В Аксессе (без SQL-сервера) их нет. Но умельцы делают: Злоумышленник. - Триггер Бенедикта. :-)

Добавлено через 9 минут
В Аксессе их нет
Ну, если не считать "вшитые", которые выдают сообщения типа: "Будет изменено (удалено) n записей. Продолжить?"
1
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
28.02.2015, 11:58 3
Цитата Сообщение от Supernatural Посмотреть сообщение
Дальше мое понимание о триггерах оставляет желать лучшего.
Все просто. Для понимания "что такое ТРИГЕР" самый простой пример привожу - вам нужно чтобы в базе пользователь вводил текст заглавными буквами, а он козел иногда вводит маленькими. Так вот вам это надоело над душой у него стоять и контролировать и вы решили атоматизировать - написали триггер, который любой текст преобразует в заглавные. В общем тригер поззволяет работать с таблицами при из заполнении\изменении.
Цитата Сообщение от Supernatural Посмотреть сообщение
и где он вообще располагается в логической схеме?
access вообще работает с тригерами? я не уверен, ведь это не полноценная база
0
8860 / 5908 / 585
Регистрация: 27.03.2013
Сообщений: 19,574
28.02.2015, 12:08 4
Цитата Сообщение от Серж_87 Посмотреть сообщение
...поззволяет работать с таблицами...
Крайне возмущён.
Работать нужно только с формами, а не с таблицами.
Зачем маленьких Плохому учите?
По себе знаю. потом очень долго перестраиваться придется.
Ле-Ле-Ле
0
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
28.02.2015, 12:10 5
kmv-puh, так работая с формами в итоге работаешь с таблицами же ) Я не о том, что напрямую вводить данные в таблицу, а в целом что тригер работает именно с таблицами
0
8860 / 5908 / 585
Регистрация: 27.03.2013
Сообщений: 19,574
28.02.2015, 12:23 6
Ну извиняюсь, видимо не на столько глубоко просекаю ситуацию.
Кликните здесь для просмотра всего текста
Обычно приучен к конкретным терминам, а не полувиртуальным, я обычно в подсознательные астралы и менталы ленюсь лезть, типа по жизни немного лентяй.
0
Эксперт MS Access
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,864
28.02.2015, 12:25 7
Вообще то некий аналог триггеров уже в 2010 есть - это макросы данных. Наиболее полное описание, которое мне попадалось, в "Access 2010 Programmer's Reference", глава 4.
1
619 / 218 / 51
Регистрация: 22.11.2010
Сообщений: 1,781
Записей в блоге: 3
28.02.2015, 13:11  [ТС] 8
то есть триггер сам по себе срабатывает при работе с таблицами и формами, а как случай с запросами?
0
Эксперт MS Access
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,864
28.02.2015, 13:19 9
Триггер срабатывает при удалении, добавлении, изменении записи в таблице. А вот как она удаляется, добавляется, изменяется: в таблице, в форме, в запросе или запросом, в наборе данных, ... - ему все равно.
1
619 / 218 / 51
Регистрация: 22.11.2010
Сообщений: 1,781
Записей в блоге: 3
28.02.2015, 14:35  [ТС] 10
ага значит, триггер срабатывает при непосредственной работе с самой таблицей, в случае с запросом он ничего не делает. Хорошо, а в аксесе есть сервис на написанию своего триггера? И как он хранится? В списке с запросами, таблицами, отчетами и формами?
0
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
28.02.2015, 14:40 11
Цитата Сообщение от Supernatural Посмотреть сообщение
ага значит, триггер срабатывает при непосредственной работе с самой таблицей, в случае с запросом он ничего не делает
Сколько тебе еще говорить, тригеру пофиг каким способом добавляется/изменяется значение в таблице. Если запрос на выборку (селект) то естественное изменения в таблице не будет и тригеру не на что реагировать

Добавлено через 1 минуту
Цитата Сообщение от Supernatural Посмотреть сообщение
Хорошо, а в аксесе есть сервис на написанию своего триггера?
как написал ltv_1953, в 2010 вроде как есть. Я лично не слышал чтобы в аксесе был тригер
0
619 / 218 / 51
Регистрация: 22.11.2010
Сообщений: 1,781
Записей в блоге: 3
28.02.2015, 14:53  [ТС] 12
Серж_87, значит не важно как изменяется таблица/форма, он все равно сработает. А вообще триггер является промежуточным уровнем между пользователем и таблицей БД? Как бы пользователь неявно изменяет кортежи в БД, за него на внутреннем уровне это делает триггер, верно? Что вообще в таком случае триггер обеспечивает? И можно ли без него работать в других СУБД?
0
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
28.02.2015, 15:27 13
Цитата Сообщение от Supernatural Посмотреть сообщение
И можно ли без него работать в других СУБД?
В любой нормальной базе не обойтись без тригера. например пользователь заполняет данные в одну таблицу и для целостности базы необходимо менять данные в другой таблице. Работать без него конечно можно, это как защита/подстраховка для ненарушения целостности базы
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
28.02.2015, 15:36 14
Цитата Сообщение от Серж_87 Посмотреть сообщение
В любой нормальной базе не обойтись без тригера
Не буду настаивать, но мое мнение ровно противоположное: если в БД требуется триггер, значит либо БД не нормализована, либо интерфейс не соответствует структуре данных.

Впрочем, есть одна ситуация когда триггера ничему не противоречат. Это логирование ввода и ошибок. Тут их применение безусловно полезно.
1
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
28.02.2015, 15:40 15
mobile, в целом вы правы. Я сейчас имею ввиду не базу аксес где 10-20 табличек, а базу крупной компании, которую разрабатывают и дорабатывают годами. Невозможно при создании БД учесть все мелочи, и выявленных касяки лечатся тригерами, это вполне нормально
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
28.02.2015, 16:07 16
Цитата Сообщение от Серж_87 Посмотреть сообщение
не базу аксес где 10-20 табличек
В самой большой БД, которую я создавал, 430 таблиц, 705 запросов, 181 форма, 59 отчетов и 126 модулей. Не надо приписывать аксу невозможное, но и не надо делать из него детскую игрушку. При всех своих недостатках, он многое может.
0
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
28.02.2015, 16:14 17
mobile, при всем моем уважении к аксес, это больше инструмент для обработки данных, но не СУБД. Какой смысл компании иметь базу на аксесе с ограниченными возможностями (как размер так и функционал), если существуют полноценные бесплатные базы - MySQL, Firebird и т.д.
Да, он прост, можно с коленки набросать за 15 мин нужный инструмент или БД, но минусов у него куча
0
619 / 218 / 51
Регистрация: 22.11.2010
Сообщений: 1,781
Записей в блоге: 3
28.02.2015, 16:20  [ТС] 18
Хочу расставить точки. Если я работаю в аксесе с таблицей/формой БД, то я явно работаю с данными таблицы, напрямую. Но если я зайду в другую СУБД, то там явно не поработаю с данными таблиц БД, после моих изменений (UPDATE, INSERT, DELETE) вызывается триггер и выполняет уже изменения на внутреннем уровне. Все верно?
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
28.02.2015, 16:21 19
Цитата Сообщение от Серж_87 Посмотреть сообщение
но минусов у него куча
Затевать еще один, по моему глубокому убеждению, бессмысленный спор на тему кто сильнее кит или слон, я не собираюсь. В сети Вы найдете сотни таких: Access vs MySql, Access vs FoxPro и прочая, и прочая.
Я создаю в аксе нужные людям программы, которые работают годами и даже десятками лет. Этого мне достаточно, чтобы считать MS Access полноценным инструментом.
3
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
28.02.2015, 16:24 20
Цитата Сообщение от Supernatural Посмотреть сообщение
после моих изменений (UPDATE, INSERT, DELETE) вызывается триггер и выполняет уже изменения на внутреннем уровне. Все верно?
Да
mobile, согласен
1
28.02.2015, 16:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2015, 16:24
Помогаю со студенческими работами здесь

Когда будет вызван Dispose
Иногда вижу в коде вот такую конструкцию public SomeObject GetObject() { using(obj) ...

Как узнать чем (каким Event) был вызван метод
Можно ли как-то узнать, каким Event ом или из какого класса был вызван метод?

Можно узнать на каком элементе был вызван метод connect ?
Здравствуйте. При вызове метода connect() в вызываемой функции можно узнать на каком элементе было...

Какова вероятность того, что отвечать был вызван мальчик?
3. В классе обучаются 20 девочек и 10 мальчиков. К уроку не выполнили домашнее задание 4 девочки и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru