Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
22.07.2005, 11:39
|
|||
|---|---|---|---|
Вложенные транзакции |
|||
|
#18+
День добрый, ASE 12.5.1 Есть ХП примерно такого вида: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. В процедуре SubscriberDel также есть кусок кода Код: plaintext В таблице dealer есть foreign key на данные в таблице Subscriber ( которые удаляюся в процедуре SubscriberDel ), затык в общем в том что не смотря на то что приведенном куске кода перед вызовом SubscriberDel чистятся данные в dialer, SubscriberDel все равно говорит что не может удалить данные из таблицы Subscriber так как на них есть ссылка из таблицы dialer. как это можно разрулить ? Если выполнять отдельной транзакцией Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.07.2005, 11:43
|
|||
|---|---|---|---|
Вложенные транзакции |
|||
|
#18+
g613 wrote: > В процедуре SubscriberDel также есть кусок кода > > begin tran...commit Автора подавить. Транзакциями управлять с клиента. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.07.2005, 11:45
|
|||
|---|---|---|---|
Вложенные транзакции |
|||
|
#18+
Dim2000 g613 wrote: > В процедуре SubscriberDel также есть кусок кода > > begin tran...commit Автора подавить. Транзакциями управлять с клиента. Posted via ActualForum NNTP Server 1.2 тоесть проблеммы в консерватории и оно в принципе так работать не будет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.07.2005, 11:56
|
|||
|---|---|---|---|
Вложенные транзакции |
|||
|
#18+
g613 В таблице dealer есть foreign key на данные в таблице Subscriber ( которые удаляюся в процедуре SubscriberDel ), затык в общем в том что не смотря на то что приведенном куске кода перед вызовом SubscriberDel чистятся данные в dialer, SubscriberDel все равно говорит что не может удалить данные из таблицы Subscriber так как на них есть ссылка из таблицы dialer. Значит они не все такие записи удаляются. Тут надо вам разобраться в логике ваших процедур более детально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.07.2005, 11:59
|
|||
|---|---|---|---|
Вложенные транзакции |
|||
|
#18+
Dim2000 > В процедуре SubscriberDel также есть кусок кода > begin tran...commit Автора подавить. Транзакциями управлять с клиента. Да ты что людям ерунду советуешь ? Транзакциями с клиента управлять конечно можно (иногда, если хочешь завалить работу БД), но только не в ASE и MSSQL . Oracle, Interbase - пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.07.2005, 12:02
|
|||
|---|---|---|---|
Вложенные транзакции |
|||
|
#18+
g613 begin tran...commit тоесть проблеммы в консерватории и оно в принципе так работать не будет ? Да не верь, все будет работать. Если конечно процедуры правильно написаны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.07.2005, 12:05
|
|||
|---|---|---|---|
Вложенные транзакции |
|||
|
#18+
MasterZiv g613 В таблице dealer есть foreign key на данные в таблице Subscriber ( которые удаляюся в процедуре SubscriberDel ), затык в общем в том что не смотря на то что приведенном куске кода перед вызовом SubscriberDel чистятся данные в dialer, SubscriberDel все равно говорит что не может удалить данные из таблицы Subscriber так как на них есть ссылка из таблицы dialer. Значит они не все такие записи удаляются. Тут надо вам разобраться в логике ваших процедур более детально. чейто я совсем запутался... спрошу просто, изменения выполненые в транзакции верхнего уровня должны быть видны во вложенной транзакции или нет ? Судя по всему вот в этом конкретном случае НЕТ, с чем это вообще может быть связано ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.07.2005, 16:22
|
|||
|---|---|---|---|
Вложенные транзакции |
|||
|
#18+
Ну блин где-то так declare @tranflag int Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.07.2005, 00:04
|
|||
|---|---|---|---|
Вложенные транзакции |
|||
|
#18+
дело было не в бобине ( foreign key ) как я уже говорил есть процедура 'A' Код: plaintext 1. 2. 3. 4. 5. и процедура B Код: plaintext 1. 2. 3. 4. 5. 6. в результате запуска A получаю Код: plaintext 1. 2. 3. 4. 5. 6. 7. на сколько я понял вся хрень происходит от того, что временная таблица #TmpTable создается впринципе в первой транзакции, в то время как удаляется во вложенной... поправьте если не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.07.2005, 00:37
|
|||
|---|---|---|---|
Вложенные транзакции |
|||
|
#18+
g613 спрошу просто, изменения выполненые в транзакции верхнего уровня должны быть видны во вложенной транзакции или нет ? Да. Они уже сделаны и "видны". g613 Судя по всему вот в этом конкретном случае НЕТ, с чем это вообще может быть связано ? Только разве что если транзакцию кто-то уже к этому моменту успел откатить. Заметь, что если rollback делаешь, откатываются ВСЕ вложенные транзакции, до самой внешней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.07.2005, 00:39
|
|||
|---|---|---|---|
Вложенные транзакции |
|||
|
#18+
Процедуры наверное не умеешь писать правильно, чтобы они работали с транзакциями. Давай код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.07.2005, 11:36
|
|||
|---|---|---|---|
Вложенные транзакции |
|||
|
#18+
MasterZivПроцедуры наверное не умеешь писать правильно, чтобы они работали с транзакциями. Давай код. Да я как бы их и не пишу, мнеб чтоб оно работало. Народ который их пишет тестит походу на 11.9.2 а у нас 12.5.1... Я у себя в общем сделал щас без `exec ....`, тоесть код из вложеной процедуры переписал в верхнюю процедуру... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.07.2005, 12:34
|
|||
|---|---|---|---|
Вложенные транзакции |
|||
|
#18+
g613 Да я как бы их и не пишу, мнеб чтоб оно работало. Народ который их пишет тестит походу на 11.9.2 а у нас 12.5.1... Это все равно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.07.2005, 12:52
|
|||
|---|---|---|---|
Вложенные транзакции |
|||
|
#18+
MasterZiv g613 Да я как бы их и не пишу, мнеб чтоб оно работало. Народ который их пишет тестит походу на 11.9.2 а у нас 12.5.1... Это все равно. все равно в смысле 11.9.2 == 12.5.1 ? вылезло просто уже несколько плюшек, с созданием таблиц: if ( exists .... ) create table ... с проверкой на наличие индекса, щас вот это... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.07.2005, 12:52
|
|||
|---|---|---|---|
Вложенные транзакции |
|||
|
#18+
Почему в DealerDel два коммита на один begin tran ? На всякий случай ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Вот так не пойдет. Если в процедуре создается временная таблица, эта процедура сама должна начинать транзакцию, т.е. такой begin tran, который переводит @@trancount из 0 в 1 должен быть именно в этой процедуре. Вызывать ее из других процедур можно будет только без открытой транзакции. Или, говоря по-другому, создавать временные таблицы внутри транзакции можно только в той процедуре, которая реально транзакцию открывает (как правило, в самой внешней). Да , еще , у меня закрадывается смутное подозрение, не в chained transactions ли эти процедуры написаны ? Тогда это совсем плохо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.07.2005, 13:06
|
|||
|---|---|---|---|
Вложенные транзакции |
|||
|
#18+
MasterZivПочему в DealerDel два коммита на один begin tran ? На всякий случай ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Вот так не пойдет. Если в процедуре создается временная таблица, эта процедура сама должна начинать транзакцию, т.е. такой begin tran, который переводит @@trancount из 0 в 1 должен быть именно в этой процедуре. Вызывать ее из других процедур можно будет только без открытой транзакции. Или, говоря по-другому, создавать временные таблицы внутри транзакции можно только в той процедуре, которая реально транзакцию открывает (как правило, в самой внешней). тоесть я таки не зря переписал это все... Код: plaintext 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. Да , еще , у меня закрадывается смутное подозрение, не в chained transactions ли эти процедуры написаны ? Тогда это совсем плохо. unchained ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.07.2005, 18:32
|
|||
|---|---|---|---|
Вложенные транзакции |
|||
|
#18+
А чего ж тогда такой код у вас ? Код: plaintext 1. 2. 3. 4. 5. 6. Транзакция не открывается, а rollback стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.07.2005, 20:30
|
|||
|---|---|---|---|
Вложенные транзакции |
|||
|
#18+
MasterZivА чего ж тогда такой код у вас ? Код: plaintext 1. 2. 3. 4. 5. 6. Транзакция не открывается, а rollback стоит. если чесно, я в тупике... Central когда его попросить сгенерить DDL для процедуры пишет: Код: plaintext 1. но оно еще вроде как и от клиента зависит... вот тут я не в курсе... Клиент у нас без исходников... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2005, 11:10
|
|||
|---|---|---|---|
Вложенные транзакции |
|||
|
#18+
Нет, от клиента это не зависит, но все равно ни о чем не говорит. Для каждой процедуры можно поставить режим работы транзакций, в котором она работает (sp_procxmode). Тогда процедура не будет работать в режиме, для которого она не предназначена. Но если этот режим вообще не проставлен, то проверок не делается и считается, что процедура может работать в любом режиме. А возвращается в этом случае unchained, потому что это считается режимом по умолчанию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=55&mobile=1&tid=2013512]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
75ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 258ms |
| total: | 453ms |

| 0 / 0 |
