1 | |
Когда был вызван триггер и где он располагается в логической схеме?27.02.2015, 23:03. Показов 1492. Ответов 20
Метки нет (Все метки)
Всем доброго времени суток.
В течение полугода задавался вопросом что такое "триггер", но все никак руки не доходили поискать/погуглить. Все, что я понял из литературы в интернете, что триггер - хранимая процедура, своего рода подпрограмма на PL/SQL, которая вызывается при изменении таблицы базы данных. Дальше мое понимание о триггерах оставляет желать лучшего. Приведу пример, --у меня открыта какая-нибудь таблица в БД, конкретно рассматривается Access. --И хочу ввести некоторые коррективы в какой-нибудь из кортежей. --Что делаю я - я просто стираю backspace'ом не нужные слова и печатаю другое, --затем добавляю новый кортеж. -- И после жму Сохранить. А теперь вопрос - --когда был вызван триггер и где он вообще располагается в логической схеме? (есть мнение что он где-то в концептуальном уровне).
0
|
27.02.2015, 23:03 | |
Ответы с готовыми решениями:
20
Триггер, вызывающий процедуру, в которой выполняется select к этой таблице (откуда был вызван триггер) Открытие попап там, откуда он был вызван Как узнать откуда был вызван метод? Как в отладке выяснить, откуда был вызван метод |
2842 / 774 / 41
Регистрация: 20.05.2012
Сообщений: 2,055
|
|
28.02.2015, 03:31 | 2 |
Примерно да. Например, они запоминают все сделанные к(в) базе запросы: запросы на изменение (Update, Insert...). В Аксессе (без SQL-сервера) их нет. Но умельцы делают: Злоумышленник. - Триггер Бенедикта. :-)
Добавлено через 9 минут
1
|
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
|
|
28.02.2015, 11:58 | 3 |
Все просто. Для понимания "что такое ТРИГЕР" самый простой пример привожу - вам нужно чтобы в базе пользователь вводил текст заглавными буквами, а он козел иногда вводит маленькими. Так вот вам это надоело над душой у него стоять и контролировать и вы решили атоматизировать - написали триггер, который любой текст преобразует в заглавные. В общем тригер поззволяет работать с таблицами при из заполнении\изменении.
access вообще работает с тригерами? я не уверен, ведь это не полноценная база
0
|
8860 / 5908 / 585
Регистрация: 27.03.2013
Сообщений: 19,574
|
|
28.02.2015, 12:08 | 4 |
Крайне возмущён.
Работать нужно только с формами, а не с таблицами. Зачем маленьких Плохому учите? По себе знаю. потом очень долго перестраиваться придется. Ле-Ле-Ле
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
|
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,864
|
|
28.02.2015, 12:25 | 7 |
Вообще то некий аналог триггеров уже в 2010 есть - это макросы данных. Наиболее полное описание, которое мне попадалось, в "Access 2010 Programmer's Reference", глава 4.
1
|
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,864
|
|
28.02.2015, 13:19 | 9 |
Триггер срабатывает при удалении, добавлении, изменении записи в таблице. А вот как она удаляется, добавляется, изменяется: в таблице, в форме, в запросе или запросом, в наборе данных, ... - ему все равно.
1
|
28.02.2015, 14:35 [ТС] | 10 |
ага значит, триггер срабатывает при непосредственной работе с самой таблицей, в случае с запросом он ничего не делает. Хорошо, а в аксесе есть сервис на написанию своего триггера? И как он хранится? В списке с запросами, таблицами, отчетами и формами?
0
|
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
|
|
28.02.2015, 14:40 | 11 |
Сколько тебе еще говорить, тригеру пофиг каким способом добавляется/изменяется значение в таблице. Если запрос на выборку (селект) то естественное изменения в таблице не будет и тригеру не на что реагировать
Добавлено через 1 минуту как написал ltv_1953, в 2010 вроде как есть. Я лично не слышал чтобы в аксесе был тригер
0
|
28.02.2015, 14:53 [ТС] | 12 |
Серж_87, значит не важно как изменяется таблица/форма, он все равно сработает. А вообще триггер является промежуточным уровнем между пользователем и таблицей БД? Как бы пользователь неявно изменяет кортежи в БД, за него на внутреннем уровне это делает триггер, верно? Что вообще в таком случае триггер обеспечивает? И можно ли без него работать в других СУБД?
0
|
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
|
|
28.02.2015, 15:27 | 13 |
В любой нормальной базе не обойтись без тригера. например пользователь заполняет данные в одну таблицу и для целостности базы необходимо менять данные в другой таблице. Работать без него конечно можно, это как защита/подстраховка для ненарушения целостности базы
0
|
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|
28.02.2015, 15:36 | 14 |
Не буду настаивать, но мое мнение ровно противоположное: если в БД требуется триггер, значит либо БД не нормализована, либо интерфейс не соответствует структуре данных.
Впрочем, есть одна ситуация когда триггера ничему не противоречат. Это логирование ввода и ошибок. Тут их применение безусловно полезно.
1
|
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
|
|
28.02.2015, 15:40 | 15 |
mobile, в целом вы правы. Я сейчас имею ввиду не базу аксес где 10-20 табличек, а базу крупной компании, которую разрабатывают и дорабатывают годами. Невозможно при создании БД учесть все мелочи, и выявленных касяки лечатся тригерами, это вполне нормально
0
|
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|
28.02.2015, 16:07 | 16 |
В самой большой БД, которую я создавал, 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
|
28.02.2015, 16:20 [ТС] | 18 |
Хочу расставить точки. Если я работаю в аксесе с таблицей/формой БД, то я явно работаю с данными таблицы, напрямую. Но если я зайду в другую СУБД, то там явно не поработаю с данными таблиц БД, после моих изменений (UPDATE, INSERT, DELETE) вызывается триггер и выполняет уже изменения на внутреннем уровне. Все верно?
0
|
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|
28.02.2015, 16:21 | 19 |
Затевать еще один, по моему глубокому убеждению, бессмысленный спор на тему кто сильнее кит или слон, я не собираюсь. В сети Вы найдете сотни таких: Access vs MySql, Access vs FoxPro и прочая, и прочая.
Я создаю в аксе нужные людям программы, которые работают годами и даже десятками лет. Этого мне достаточно, чтобы считать MS Access полноценным инструментом.
3
|
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
|
|
28.02.2015, 16:24 | 20 |
1
|
28.02.2015, 16:24 | |
28.02.2015, 16:24 | |
Помогаю со студенческими работами здесь
20
Когда будет вызван Dispose Как узнать чем (каким Event) был вызван метод Можно узнать на каком элементе был вызван метод connect ? Какова вероятность того, что отвечать был вызван мальчик? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |