Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Загадочная ошибка 746...
|
|||
|---|---|---|---|
|
#18+
Есть такая процедурка, рожденная в битве за интеграцию с одним legacy app: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. (Вообще-то, хочется внутри заиметь WITH -- чтобы update и select в одном statement были, но пока есть проблема поважнее.) Как, наверное, видно, процедура получает следующий свободный PK для заданной таблицы NAME. Далее процедуру используем в триггере INSTEAD OF INSERT как: Код: plaintext 1. 2. 3. 4. 5. 6. Так вот, на втором CALL получаем прелюбопытнейшую ошибку 746 -- com.ibm.db2.jcc.b.SqlException: DB2 SQL error: SQLCODE: -723, SQLSTATE: 09000, SQLERRMC: DB2IBBP.T_ADD_TM;-746;57053;DB2IBBP.GET_NEXT_PK|SQL070226162912400|REA которая означает, что мы читаем таблицу, которую уже изменили(???). Изменить-то изменили (ту самую PRIM_KEY_RANGE), да изменили-то другую запись! Я не понимаю, почему это происходит. Кто-нибудь может пояснить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 00:52 |
|
||
|
Загадочная ошибка 746...
|
|||
|---|---|---|---|
|
#18+
Заверните Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 10:29 |
|
||
|
Загадочная ошибка 746...
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinЗаверните ... в процедуру и вызывайте ее внутри триггера. Пока ждал ответа, сделал немного не так, но по сути, видимо, так же: Код: plaintext 1. То есть вместо пяти вызовов процедуры идет один. Но я таки не понимаю, из-за чего проблема -- а именно это мне и хочется понять. Что такого неправильного я делаю, если вызываю процедуру несколько раз? Или я вообще чего-то более фундаментального не понимаю (делаем скиду -- я жаба-девелопер, не DBA)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 18:25 |
|
||
|
Загадочная ошибка 746...
|
|||
|---|---|---|---|
|
#18+
Vladimir DyuzhevНо я таки не понимаю, из-за чего проблема -- а именно это мне и хочется понять. Что такого неправильного я делаю, если вызываю процедуру несколько раз? Или я вообще чего-то более фундаментального не понимаю (делаем скиду -- я жаба-девелопер, не DBA)?Похоже, что это глюк, хотя я могу и ошибаться. Такая ошибка описана здесь . Но, по-моему, к данному случаю она не относится, т.е. не должна появляться. Странно, что если вложить 2 call в другую процедуру, а не вызавать их напрямую в dynamic compound statement (именно так оно вызывается в триггере), то ошибки нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2007, 09:44 |
|
||
|
Загадочная ошибка 746...
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein Похоже, что это глюк, хотя я могу и ошибаться. Такая ошибка описана здесь . О, спасибо за ссылку! Как раз она всё объясняет: есть триггер с top-level контекстом, есть два вызова одной и той же процедуры, каждая со своим контекстом ; когда первая процедура модифицирует таблицу, контекст второй процедуры теряет к ней доступ, ибо у теблицы "неопределенное состояние". Не очень, конечно, удобно, но -- такой монастырь. Будем знать. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2007, 19:41 |
|
||
|
Загадочная ошибка 746...
|
|||
|---|---|---|---|
|
#18+
На практике получается так, что у них эти 2 call работают из внешней atomic процедуры, которая может быть даже вызвана из dynamic compound statement'а, но не работают, если вызываются из dynamic compound statement'а напрямую: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: plaintext 1. 2. 3. 4. В чем разница - не понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 10:30 |
|
||
|
|

start [/forum/topic.php?fid=43&fpage=117&tid=1604754]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 323ms |

| 0 / 0 |
