|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
Может быть с таким количеством "спасибо, не знал" - рановато изобретать замысловатые схемы? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2020, 16:27 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
env НеофитSQL, Искренне жаль тех, кому придётся потом это сопровождать. Они не будут знать умозаключений про 0.2 герца, гарантию однопользовательской работы и т.п. Зато будут совершенно искренне материть "умника", влепившего > priorMaxId в триггер, когда наконец докопаются до источника ошибки. Возможно, они удивятся "а что, так можно было, посмотреть из после-триггера на состояние таблицы до триггера?". Вы, env, знаете как это сделать? ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2020, 16:28 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL, Я не вижу смысла в подобной конструкции, т.к. привык к управлению данными через интерфейсы пакетов и разграничение прав доступа. Для данных загружаемых массово проще иметь идентификатор пачки загрузки и дату вставки и изменения. Необходимость в ваших конструкциях возникает разве что при бардаке в доступе к данным. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2020, 16:36 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL Кит, я не знал о названии direct load, это используется при backup/restore? это штатный инструмент высокопроизводительной загрузки в БД больших объемов данных откуда угодно, например из текстовых файлов. я не к тому, что это обязательно ваш сценарий, а к тому, что с триггерами много подводных камней. ограничения, производительность, повторные выполнения, НЕвыполнения, негарантированный порядок выполнения... если вы, как вы говорили в какой-то из своих тем, привыкли работать с кодом, который пишется так, чтобы к нему не возвращаться, то скорее всего решение на триггерах - не ваш выбор. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2020, 16:38 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL "а что, так можно было, посмотреть из после-триггера на состояние таблицы до триггера?" ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2020, 16:39 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
кит северных морей, Не надо подкидывать ему ещё и это... кит северных морей который пишется так, чтобы к нему не возвращаться Так всё верно, к такому коду возвращаться не захочется. Проще свалить в другое место. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2020, 16:43 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
env НеофитSQL, Я не вижу смысла в подобной конструкции, т.к. привык к управлению данными через интерфейсы пакетов и разграничение прав доступа. Для данных загружаемых массово проще иметь идентификатор пачки загрузки и дату вставки и изменения. Необходимость в ваших конструкциях возникает разве что при бардаке в доступе к данным. судя по всему, он автоматизирует взаимодействие независимох процессов без замены внешних интерфейсов. отсюда уведомления, очереди и прочая событийность, но такая, чтобы "точки входа" в существующие процессы не менять. Ясен пень, что триггер поднимается на событие - вот ему и точка взаимодейтвия. А то, что его взаимолдействие - неуправляемое, с ложными срабатываниями - ему пока до лампады. И пока просвета не видно. Вообще, упорства и энергии парню, конечно, не занимать. Но до применения его в мирных целях пока очень далеко. Жесть, огонь, пальба и приляпывание косвенности в местах, о которых он случайно прочитал к текущему моменту. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2020, 17:44 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
кит северных морей НеофитSQL "а что, так можно было, посмотреть из после-триггера на состояние таблицы до триггера?" Нет конечно, я даже слов таких не знал до сегодняшнего дня. Ооо, прочитал. Это прямо машина времени. Я использовал свойство функций объявленных как автономная транзакция, которые не видят posted данные, поэтому может доступиться к таблице состоянии до вставки* в после-вставочном триггере. (*) в моем конкретном случае: для импорта событий всех таблиц, "до вставки" и "последний комммит" это одно и то же, каждая строка импорта сопровождается коммитом, т.к. откаты по событиям не поддерживаются бизнес-логикой. (**) на всякий случай я удостоверился что механизм импорта автоматически делает построчный коммит, и добавил в триггер код который не позволит вставлять строку если есть некомитнутые. Адын страка - адын камит. Ибо к действиям на мой код извне я привык относиться с подозрением и бить по рукам если не так, с соответствующей внятно описанной ошибкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2020, 19:06 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
env НеофитSQL, Я не вижу смысла в подобной конструкции, т.к. привык к управлению данными через интерфейсы пакетов и разграничение прав доступа. Для данных загружаемых массово проще иметь идентификатор пачки загрузки и дату вставки и изменения. Необходимость в ваших конструкциях возникает разве что при бардаке в доступе к данным. "не знаю и не нужно" - позиция для программиста слабая. знать надо много, больше чем нужно, т.к. незнакомые грабли бьют не хуже знакомых. Посмотрите, я раскрыл "секрет" в другом сообщении. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2020, 19:10 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL "не знаю и не нужно" - позиция для программиста слабая. Да, именно ваши методы слабо знакомого с инструментом - позиция сильная. Продолжайте. Здесь клоунов любят. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2020, 19:27 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
К слову о неожиданных граблях - вот мои сегодняшние. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Никогда не пользовался currval, попробовал ради интереса и тут же получил граблями. Sequence определена с инкрементом 1, у меня прыгнула сразу на 5. Почитал оракловскую документацию, нашел завуалированый намек на причину такого поведения, хотя прямой текст говорит: возвращает последнее значение. Тут явно не последнее, а прошлогоднее какое-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2020, 19:32 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQLНикогда не пользовался ... Почитал ... , нашел завуалированый намек ... Это все неудивительно. Удивительно, что вы игнорируете очевидные советы сходить в поиск , почитать документацию, попробовать. А главное - поступить на работу, где старший товарищ вместо форума будет вас направлять. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2020, 19:44 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
dmdmdm Да, именно ваши методы слабо знакомого с инструментом - позиция сильная. Открою секрет моего успеха: я использую в работе только инструменты с которыми хорошо знаком, и после тщательных проверок что мое понимание функции инструмента сочетается с действительностью в рамках моей задачи и метод использования является задокументированым. Поэтому я на данном этапе моих скромных знаний привожу задачи к самым простым знаменателям, и решаю их в срок и без переделок. Иногда допускаю промахи, которые мой опытный коллега ловит при код ревью. А в экспериментах - все что угодно. Отверткой копаю, рулеткой стучу, веревкой режу. Получаю неоценимые подсказки от публики, образовываюсь, получаю удовольствие. Стараюсь не раздражать старейшин форума. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2020, 19:46 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
dmdmdm НеофитSQLНикогда не пользовался ... Почитал ... , нашел завуалированый намек ... Это все неудивительно. Удивительно, что вы игнорируете очевидные советы сходить в поиск , почитать документацию, попробовать. А главное - поступить на работу, где старший товарищ вместо форума будет вас направлять. Вы ответили так, как вроде знаете причину пропуска чисел в sequence в моем примере. В правильном ответе всего три слова, но они не те, которые вы мне предложили гуглить. Вы знаете, почему currval отстает на 5 (или 10, или 15), а не на 1? Я сегодня узнал. Между вызовом currval и nextval никто нигде не доступался к этому объекту sq_test. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2020, 19:53 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL после тщательных проверок P.S. Нет, я даже не издеваюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2020, 20:17 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Именно "тщательная проверка" является одним из способов подгонки реальности под собственные представления. Вот такой вот когнитивный парадокс. P.S. Нет, я даже не издеваюсь. Извините, но я не понимаю что вы хотите сказать. Возьмем конкретный пример: у меня были основания думать что используемый в системе (в нескольких местах) метод построчного импорта данных исполняет коммит после каждой строки. Документация намекает что это так, но прямо не говорит. Это для меня желаемое поведение. Я нашел способ проверить что это действительно так, двумя способами. Убедился что так. (на тестовой БД) После этого, я добавил проверку в который даст ошибку в явном виде если поведение импорта когда-либо изменится на нежелаемое. Тогда мой код им (снаружи) скажет "делай коммит после каждой строки в явном виде, иначе не работает". Таким образом, я максимально сузил вводные данные и значительно упростил логику обработки событий. Мой code coverage в юнит-тесте выше 90%. А как вы решаете подобные задачи? Пишете код с максимальной выживаемостью, "на вырост" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2020, 20:56 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL прямой текст говорит: возвращает последнее значение. Тут явно не последнее, а прошлогоднее какое-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2020, 21:00 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL Тогда мой код им (снаружи) скажет "делай коммит после каждой строки в явном виде, иначе не работает". И что произойдёт при увеличении объёма импорта? НеофитSQL знать надо много, больше чем нужно Но это не ваш путь. Явно. Вам удобнее взять один инструмент, показавшийся подходящим, и прикручивать его на изоленту и клей, затыкая дыры ограничениями для внешних вызывающих систем. Вместо того, чтобы задаться вопросом "а как правильно решить эту задачу". ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 06:37 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL Посмотрите, я раскрыл "секрет" в другом сообщении Можете убедительно доказать, что поведение выбранного вами "секрета" не сменится при обновлении версии, добавлении патча, в многопользовательской среде? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 06:39 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL Отверткой копаю, рулеткой стучу, веревкой режу Идеальное описание вашего подхода к разработке на стороне бд. Лучше не скажешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 06:40 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
env НеофитSQL Посмотрите, я раскрыл "секрет" в другом сообщении Можете убедительно доказать, что поведение выбранного вами "секрета" не сменится при обновлении версии, добавлении патча, в многопользовательской среде? Доказывать? Увольте. Это черным по белому, в документации oracle написано. Почитайте про Read Committed Isolation Level, многие вопросы отпадут. Про сиквенс .currval/nextval подсказать, или ещё подумаете, как в единственной активной сессии разрыв появился? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 08:07 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
env НеофитSQL Тогда мой код им (снаружи) скажет "делай коммит после каждой строки в явном виде, иначе не работает". И что произойдёт при увеличении объёма импорта? Получу повышение. Ведь это прибыльные уведомления. Чем больше, тем лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 08:15 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL Про сиквенс .currval/nextval подсказать, или ещё подумаете, как в единственной активной сессии разрыв появился? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 08:28 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQLАдын страка - адын камит. а это не твой "опытный коллега" в соседней теме решает то, что ты сочинил ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 10:09 |
|
|
start [/forum/topic.php?fid=52&msg=40010285&tid=1880777]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
87ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 206ms |
0 / 0 |