|
|
|
Audit через триггер и переменные APEX - незадача
|
|||
|---|---|---|---|
|
#18+
Всем привет, столкнулся с такой проблемой: прикрутил аудит на изменения данных таблички, которая модифицируется из процессов в APEX. Стандартный механизм через триггер, помимо стандартных фишек, старое/новое значение, решил еще прикрутить название процесса, из которого с таблицей что-то сделали. Для этого завел application_item, и в процессе перед выполнением кода присваиваю ему значение (имя процесса). Затем в триггере через v('название_итема') достаю это значение. Вроде на первый взгляд работало нормально, но когда пригляделся к результатам, увидел, что название процесса, которое в аудит записалось, совсем не соответствует реально тому процессу, откуда модификация прошла :( что делать, пока не знаю, подобная проблема почему-то не гуглится ( Мне почему-то казалось что процессы выполняются строго последовательно, и пока один не завершился - другой не начинается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2014, 19:08 |
|
||
|
Audit через триггер и переменные APEX - незадача
|
|||
|---|---|---|---|
|
#18+
Не может быть. PL/SQL вообще-то однопоточный. Скорее всего какая-то магия с application_item. Попробуйте передать имя через свою переменную пакета или контекст. В триггере можно получить имя process point из CLIENT_INFO. Но это не имя конкретного процесса, и вдобавок оно обрезано. В APEX 4.1 и 4.2 есть функция APEX_APPLICATION.GET_COMPONENT(), она даст имя выполняемого процесса. Но эта функция не документирована. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2014, 04:45 |
|
||
|
Audit через триггер и переменные APEX - незадача
|
|||
|---|---|---|---|
|
#18+
поправка: process point виден в поле ACTION сессии, а не в CLIENT_INFO. в CLIENT_INFO апексный логин+id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2014, 04:54 |
|
||
|
Audit через триггер и переменные APEX - незадача
|
|||
|---|---|---|---|
|
#18+
Kino36, Я бы предложил, не гадать, а посмотреть, что в какой момент происходит, воспользоваться средствами apex debug. Процессы выполняются строго последовательно в порядке их приоритета (sequence). Могут быть нюансы, вроде работы в нескольких вкладках одновременно (проверяется через apex debug), тогда стоит поискать бесконтрольный вызовов коммитов. например, неявные коммиты могут быть при вызове apex_util.set_session_state и т.д. В прочем, чаще ошибки в таких случаях более банальны - отлаживайте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2014, 08:45 |
|
||
|
|

start [/forum/topic.php?fid=50&fpage=38&tid=1875262]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
88ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 417ms |

| 0 / 0 |
