|
Определить ИМЯ ХП или функции, вызвавшей срабатывание триггера поля таблицы
|
|||
---|---|---|---|
#18+
Доброго дня всем! Суть проблемы: В базе есть табл., в ней поле КОЛ. Есть порядка 60 ХП и Функций, которые могут изменить Это поле. Вроде все работает правильно, НО иногда в это поле попадает какое-то большое, неверное значение. Смотрел ХП - не увидел ошибки. Есть мысль сделать триггер на поле и записывать при каждом изменении Старое значение, новое и Имя ХП или Функции, которая это изменение произвела. Вопрос: Каким способом определить ИМЯ ХП или функции, вызвавшей срабатывание триггера? Спасибо, если кто в курсе и подскажет. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 12:25 |
|
Определить ИМЯ ХП или функции, вызвавшей срабатывание триггера поля таблицы
|
|||
---|---|---|---|
#18+
Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 12:27 |
|
Определить ИМЯ ХП или функции, вызвавшей срабатывание триггера поля таблицы
|
|||
---|---|---|---|
#18+
ДАВИД, триггер на поле сделать нельзя. Только на INSERT или на DELETE или на UPDATE или на любую их комбинацию. Knyazev Alexey, @@PROCID - это object_id самогО триггера, а не процедуры, из которой сделали UPDATE. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 12:33 |
|
Определить ИМЯ ХП или функции, вызвавшей срабатывание триггера поля таблицы
|
|||
---|---|---|---|
#18+
Knyazev Alexey Код: sql 1.
внутри триггера @@procid = object_id триггера ДАВИД, никак, триггер не должен по разному работать в зависимости от процедуры вызвавшей изменение таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 12:33 |
|
Определить ИМЯ ХП или функции, вызвавшей срабатывание триггера поля таблицы
|
|||
---|---|---|---|
#18+
ДАВИДНО иногда в это поле попадает какое-то большое, неверное значение. Почему тогда для этого поля нет ограничения ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 12:34 |
|
Определить ИМЯ ХП или функции, вызвавшей срабатывание триггера поля таблицы
|
|||
---|---|---|---|
#18+
ДАВИДФункций, которые могут изменить Это поле а вот тут поподробнее, что это за функции, "изменяющие поле"? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 12:34 |
|
Определить ИМЯ ХП или функции, вызвавшей срабатывание триггера поля таблицы
|
|||
---|---|---|---|
#18+
iap@@PROCID - это object_id самогО триггера, а не процедуры, из которой сделали UPDATE. кто мешает это значение передавать из процедур...например в теле процедуры менять контекст инфо = этому значению....далее триггер просто из контекс_инфо вытаскивает имя процедуры... либо логировать в самих процедурах ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 12:36 |
|
Определить ИМЯ ХП или функции, вызвавшей срабатывание триггера поля таблицы
|
|||
---|---|---|---|
#18+
ДАВИД, используйте DBCC INPUTBUFFER(@@SPID) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 12:41 |
|
Определить ИМЯ ХП или функции, вызвавшей срабатывание триггера поля таблицы
|
|||
---|---|---|---|
#18+
Knyazev Alexeyкто мешает это значение передавать из процедур...например в теле процедуры менять контекст инфо = этому значению....далее триггер просто из контекс_инфо вытаскивает имя процедуры... это нужно вносить изменения во все процедуры, а именно этого ТС, по всей видимости, не очень хочет. уж если править процедуры, то сразу по второму варианту Knyazev Alexeyлибо логировать в самих процедурах в любом случае это не ответ на вопрос авторКаким способом определить ИМЯ ХП или функции(), вызвавшей срабатывание триггера? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 12:41 |
|
Определить ИМЯ ХП или функции, вызвавшей срабатывание триггера поля таблицы
|
|||
---|---|---|---|
#18+
Knyazev Alexey - Спасибо. Но, извините, ИМЯ ХП по ее ID ? Напомните функцию, пожалуйста... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 12:55 |
|
Определить ИМЯ ХП или функции, вызвавшей срабатывание триггера поля таблицы
|
|||
---|---|---|---|
#18+
[quote ДАВИД]Но, извините, ИМЯ ХП по ее ID ?[/quote object_name(@@procID) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 13:01 |
|
Определить ИМЯ ХП или функции, вызвавшей срабатывание триггера поля таблицы
|
|||
---|---|---|---|
#18+
Knyazev Alexey, А вот с этого места по-подробнее и если можно с маленьким примерчиком. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 13:08 |
|
Определить ИМЯ ХП или функции, вызвавшей срабатывание триггера поля таблицы
|
|||
---|---|---|---|
#18+
Knyazev Alexeyiap@@PROCID - это object_id самогО триггера, а не процедуры, из которой сделали UPDATE. кто мешает это значение передавать из процедур...например в теле процедуры менять контекст инфо = этому значению....далее триггер просто из контекс_инфо вытаскивает имя процедуры... либо логировать в самих процедурах Имеется ввиду ЭТО место ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 13:08 |
|
Определить ИМЯ ХП или функции, вызвавшей срабатывание триггера поля таблицы
|
|||
---|---|---|---|
#18+
И еще... В принципе я имел ввиду (просто не ясно сформулировал) СТЕК процедур. А уже из стека брать последнюю, вызвавшую триггер. И еще , триггер конечно срабатывает всегда одинаково. А вот ХП ( какая из 60-65) в это поле заносит фигню - вот ВОПРОС... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 13:12 |
|
Определить ИМЯ ХП или функции, вызвавшей срабатывание триггера поля таблицы
|
|||
---|---|---|---|
#18+
ДАВИДKnyazev Alexeyпропущено... кто мешает это значение передавать из процедур...например в теле процедуры менять контекст инфо = этому значению....далее триггер просто из контекс_инфо вытаскивает имя процедуры... либо логировать в самих процедурах Имеется ввиду ЭТО место Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 13:13 |
|
Определить ИМЯ ХП или функции, вызвавшей срабатывание триггера поля таблицы
|
|||
---|---|---|---|
#18+
ДАВИДИмеется ввиду ЭТО место А вы что собрались переписать все свои 60-65 процедур ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 13:19 |
|
Определить ИМЯ ХП или функции, вызвавшей срабатывание триггера поля таблицы
|
|||
---|---|---|---|
#18+
ДАВИД, у вас два пути 1. вы в каждую процедуру дописываете код, отвечающий за идентификацию (запись id процедуры в CONTEXT_INFO) и затем в триггере получаете текущее состояние. 2. если процедуры менять нельзя или неохота, то в триггере анализируете результат DBCC INPUTBUFFER() и пытаетесь понять цепочку событий готовый стек вызова триггера без усилий вы не получите ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 13:27 |
|
Определить ИМЯ ХП или функции, вызвавшей срабатывание триггера поля таблицы
|
|||
---|---|---|---|
#18+
ДАВИДИ еще... В принципе я имел ввиду (просто не ясно сформулировал) СТЕК процедур. А уже из стека брать последнюю, вызвавшую триггер. И еще , триггер конечно срабатывает всегда одинаково. А вот ХП ( какая из 60-65) в это поле заносит фигню - вот ВОПРОС... Страдалец, поставь в таблице или триггере constraint на "фигню" и спокойно жди... когда прибегут и доложат. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 13:29 |
|
Определить ИМЯ ХП или функции, вызвавшей срабатывание триггера поля таблицы
|
|||
---|---|---|---|
#18+
Не факт, что плохое значение вообще пишет процедура. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 13:30 |
|
|
start [/forum/topic.php?fid=46&msg=38737424&tid=1700846]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
158ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 273ms |
0 / 0 |