powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Чтение таблицы из триггера (after-insert)
25 сообщений из 178, страница 4 из 8
Чтение таблицы из триггера (after-insert)
    #40010198
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть с таким количеством "спасибо, не знал" - рановато изобретать замысловатые схемы?
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010199
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
НеофитSQL,

Искренне жаль тех, кому придётся потом это сопровождать. Они не будут знать умозаключений про 0.2 герца, гарантию однопользовательской работы и т.п. Зато будут совершенно искренне материть "умника", влепившего > priorMaxId в триггер, когда наконец докопаются до источника ошибки.


Возможно, они удивятся "а что, так можно было, посмотреть из после-триггера на состояние таблицы до триггера?".

Вы, env, знаете как это сделать? ;-)
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010208
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL,

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

Необходимость в ваших конструкциях возникает разве что при бардаке в доступе к данным.
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010210
Фотография кит северных морей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Кит, я не знал о названии direct load, это используется при backup/restore?

это штатный инструмент высокопроизводительной загрузки в БД больших объемов данных откуда угодно, например из текстовых файлов. я не к тому, что это обязательно ваш сценарий, а к тому, что с триггерами много подводных камней. ограничения, производительность, повторные выполнения, НЕвыполнения, негарантированный порядок выполнения... если вы, как вы говорили в какой-то из своих тем, привыкли работать с кодом, который пишется так, чтобы к нему не возвращаться, то скорее всего решение на триггерах - не ваш выбор.
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010211
Фотография кит северных морей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
"а что, так можно было, посмотреть из после-триггера на состояние таблицы до триггера?"
только не говорите, что вы сделали это на flashback query
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010216
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кит северных морей,

Не надо подкидывать ему ещё и это...

кит северных морей
который пишется так, чтобы к нему не возвращаться

Так всё верно, к такому коду возвращаться не захочется. Проще свалить в другое место.
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010253
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env
НеофитSQL,

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

Необходимость в ваших конструкциях возникает разве что при бардаке в доступе к данным.


судя по всему, он автоматизирует взаимодействие независимох процессов без замены внешних интерфейсов.
отсюда уведомления, очереди и прочая событийность, но такая, чтобы "точки входа" в существующие процессы не менять.

Ясен пень, что триггер поднимается на событие - вот ему и точка взаимодейтвия.
А то, что его взаимолдействие - неуправляемое, с ложными срабатываниями - ему пока до лампады.
И пока просвета не видно.

Вообще, упорства и энергии парню, конечно, не занимать.
Но до применения его в мирных целях пока очень далеко.

Жесть, огонь, пальба и приляпывание косвенности в местах, о которых он случайно прочитал к текущему моменту.
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010285
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кит северных морей
НеофитSQL
"а что, так можно было, посмотреть из после-триггера на состояние таблицы до триггера?"
только не говорите, что вы сделали это на flashback query


Нет конечно, я даже слов таких не знал до сегодняшнего дня. Ооо, прочитал. Это прямо машина времени.

Я использовал свойство функций объявленных как автономная транзакция, которые не видят posted данные, поэтому может доступиться к таблице состоянии до вставки* в после-вставочном триггере.

(*) в моем конкретном случае: для импорта событий всех таблиц, "до вставки" и "последний комммит" это одно и то же, каждая строка импорта сопровождается коммитом, т.к. откаты по событиям не поддерживаются бизнес-логикой.

(**) на всякий случай я удостоверился что механизм импорта автоматически делает построчный коммит, и добавил в триггер код который не позволит вставлять строку если есть некомитнутые. Адын страка - адын камит.

Ибо к действиям на мой код извне я привык относиться с подозрением и бить по рукам если не так, с соответствующей внятно описанной ошибкой.
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010287
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
НеофитSQL,

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

Необходимость в ваших конструкциях возникает разве что при бардаке в доступе к данным.


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

Посмотрите, я раскрыл "секрет" в другом сообщении.
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010293
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
"не знаю и не нужно" - позиция для программиста слабая.


Да, именно ваши методы слабо знакомого с инструментом - позиция сильная.

Продолжайте. Здесь клоунов любят.
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010296
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К слову о неожиданных граблях - вот мои сегодняшние.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SQL> select SQ_TEST.currval from dual;
   CURRVAL
----------
        31

SQL> select SQ_TEST.nextval from dual;
   NEXTVAL
----------
        36

SQL> select dbms_metadata.get_ddl('SEQUENCE', 'SQ_TEST') from dual;
DBMS_METADATA.GET_DDL('SEQUENC
--------------------------------------------------------------------------------
   CREATE SEQUENCE  "NEOPHYTE"."SQ_TEST"  MINVALUE 1 MAXVALUE 9999999999

 



Никогда не пользовался currval, попробовал ради интереса и тут же получил граблями.
Sequence определена с инкрементом 1, у меня прыгнула сразу на 5.

Почитал оракловскую документацию, нашел завуалированый намек на причину такого поведения, хотя прямой текст говорит: возвращает последнее значение. Тут явно не последнее, а прошлогоднее какое-то.
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010301
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQLНикогда не пользовался ... Почитал ... , нашел завуалированый намек ...

Это все неудивительно.

Удивительно, что вы игнорируете очевидные советы сходить в поиск , почитать документацию, попробовать. А главное - поступить на работу, где старший товарищ вместо форума будет вас направлять.
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010303
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm


Да, именно ваши методы слабо знакомого с инструментом - позиция сильная.


Открою секрет моего успеха: я использую в работе только инструменты с которыми хорошо знаком, и после тщательных проверок что мое понимание функции инструмента сочетается с действительностью в рамках моей задачи и метод использования является задокументированым.

Поэтому я на данном этапе моих скромных знаний привожу задачи к самым простым знаменателям, и решаю их в срок и без переделок.
Иногда допускаю промахи, которые мой опытный коллега ловит при код ревью.

А в экспериментах - все что угодно. Отверткой копаю, рулеткой стучу, веревкой режу. Получаю неоценимые подсказки от публики, образовываюсь, получаю удовольствие. Стараюсь не раздражать старейшин форума.
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010304
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm
НеофитSQLНикогда не пользовался ... Почитал ... , нашел завуалированый намек ...


Это все неудивительно.

Удивительно, что вы игнорируете очевидные советы сходить в поиск , почитать документацию, попробовать. А главное - поступить на работу, где старший товарищ вместо форума будет вас направлять.

Вы ответили так, как вроде знаете причину пропуска чисел в sequence в моем примере.
В правильном ответе всего три слова, но они не те, которые вы мне предложили гуглить.

Вы знаете, почему currval отстает на 5 (или 10, или 15), а не на 1? Я сегодня узнал.

Между вызовом currval и nextval никто нигде не доступался к этому объекту sq_test.
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010315
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
после тщательных проверок
Именно "тщательная проверка" является одним из способов подгонки реальности под собственные представления. Вот такой вот когнитивный парадокс.

P.S.
Нет, я даже не издеваюсь.
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010334
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov
Именно "тщательная проверка" является одним из способов подгонки реальности под собственные представления. Вот такой вот когнитивный парадокс.

P.S.
Нет, я даже не издеваюсь.


Извините, но я не понимаю что вы хотите сказать.

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

Я нашел способ проверить что это действительно так, двумя способами. Убедился что так. (на тестовой БД)
После этого, я добавил проверку в который даст ошибку в явном виде если поведение импорта когда-либо изменится на нежелаемое.
Тогда мой код им (снаружи) скажет "делай коммит после каждой строки в явном виде, иначе не работает".

Таким образом, я максимально сузил вводные данные и значительно упростил логику обработки событий.
Мой code coverage в юнит-тесте выше 90%.

А как вы решаете подобные задачи? Пишете код с максимальной выживаемостью, "на вырост" ?
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010337
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
прямой текст говорит: возвращает последнее значение. Тут явно не последнее, а прошлогоднее какое-то.
То ли ещё будет. Поиграйся с величиной кэша у сиквенса.
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010391
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Тогда мой код им (снаружи) скажет "делай коммит после каждой строки в явном виде, иначе не работает".

И что произойдёт при увеличении объёма импорта?

НеофитSQL
знать надо много, больше чем нужно

Но это не ваш путь. Явно. Вам удобнее взять один инструмент, показавшийся подходящим, и прикручивать его на изоленту и клей, затыкая дыры ограничениями для внешних вызывающих систем. Вместо того, чтобы задаться вопросом "а как правильно решить эту задачу".
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010392
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Посмотрите, я раскрыл "секрет" в другом сообщении


Можете убедительно доказать, что поведение выбранного вами "секрета" не сменится при обновлении версии, добавлении патча, в многопользовательской среде?
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010393
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Отверткой копаю, рулеткой стучу, веревкой режу

Идеальное описание вашего подхода к разработке на стороне бд. Лучше не скажешь.
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010399
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
НеофитSQL
Посмотрите, я раскрыл "секрет" в другом сообщении


Можете убедительно доказать, что поведение выбранного вами "секрета" не сменится при обновлении версии, добавлении патча, в многопользовательской среде?


Доказывать? Увольте. Это черным по белому, в документации oracle написано.

Почитайте про Read Committed Isolation Level, многие вопросы отпадут.

Про сиквенс .currval/nextval подсказать, или ещё подумаете, как в единственной активной сессии разрыв появился?
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010400
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
НеофитSQL
Тогда мой код им (снаружи) скажет "делай коммит после каждой строки в явном виде, иначе не работает".

И что произойдёт при увеличении объёма импорта?


Получу повышение. Ведь это прибыльные уведомления.
Чем больше, тем лучше.
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010401
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Про сиквенс .currval/nextval подсказать, или ещё подумаете, как в единственной активной сессии разрыв появился?
Нука-нука (кстати, это поведение в документации описано)
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010413
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQLАдын страка - адын камит.
а это не твой "опытный коллега" в соседней теме решает то, что ты сочинил ?
...
Рейтинг: 0 / 0
Чтение таблицы из триггера (after-insert)
    #40010415
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL

Кит, я не знал о названии direct load


в старых версиях "direct load" для insert ... values ... не работал

да и зачем Вам етот direct load, пока-что забейте на него

.....
stax
...
Рейтинг: 0 / 0
25 сообщений из 178, страница 4 из 8
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Чтение таблицы из триггера (after-insert)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]