|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
Здравствуйте! Есть такой SQL-запрос SQL Код: 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59.
Но нужно, чтобы транзакции работали не на уровне строк, а на уровне передаваемой таблицы. То есть, если есть ошибка хоть в одной строке, то отменяются все проведенные транзакции на уровне строк передаваемой таблицы. Пишу с использованием вложенных транзакции SQL Код: 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. 26. 27. 28.
Скажите, как правильно написать? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2022, 10:04 |
|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
в SQL server нет вложенных транзакций (точнее они не совсем такие, как вы ожидаете) rollback tran откатывает все открытые транзакции. для понимания Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2022, 10:32 |
|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
ferzmikk, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
для такой задачи даже транзакция явная не нужна ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2022, 10:39 |
|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
ferzmikk, не существует транзакций "на уровне строк". Лучше бы Вам не фантазировать, а ознакомиться с документацией. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2022, 11:22 |
|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
ferzmikk, авторНо нужно, чтобы транзакции работали не на уровне строк, а на уровне передаваемой таблицы. То есть, если есть ошибка хоть в одной строке, то отменяются все проведенные транзакции на уровне строк передаваемой таблицы. В данном конкретном случае очень удобно было бы использовать темповую таблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2022, 11:27 |
|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
Написал по другому: с использованием точки сохранения внутри транзакции. SQL Код: 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. 26. 27. 28. 29. 30. 31. 32.
В этом варианте есть то, что не учитывается? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2022, 12:00 |
|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
У меня вопрос: нафига этот бред? Что, религиозные убеждения не дозволяют написать Insert всей переданной таблицы? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2022, 12:16 |
|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
aleks222, Для данного примера это якобы бредовое решение. Специально упрощено, чтобы легко показать механизм решения. Но на самом деле сохраняется не в одну таблицу. Для каждой строки может быть либо Insert, либо Add, либо Update. И еще возвращает таблицу с полем ошибка (ведь в какой-то строке могла быть ошибка). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2022, 12:32 |
|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
Продолжайте изобретение непромокаемого пороха. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2022, 12:34 |
|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
felix_ff, Как вариант. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2022, 12:48 |
|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
ferzmikk, вы своим циклом по строкам напрасно жжете процессор. а еще прикиньте что у вас в таблице будет распределение типа Код: sql 1. 2. 3. 4. 5. 6.
сколько напрасных циклов приращения @counter у вас будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2022, 12:55 |
|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
felix_ff, Цикл то маленький. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2022, 13:01 |
|
Вопрос по транзакциям
|
|||
---|---|---|---|
#18+
ferzmikk felix_ff, Цикл то маленький. да ладно маленький, в таком варианте написания у вас проверка @Counter <= (SELECT MAX(RowNumber) FROM @Type) выполнится 2147483647 раз если уж пишите цикл обрабатывающий каждую строку входной таблицы пишите или курсор или что то типа такого Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2022, 14:23 |
|
|
start [/forum/topic.php?fid=46&msg=40136399&tid=1683802]: |
0ms |
get settings: |
3ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
31ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
245ms |
get tp. blocked users: |
0ms |
others: | 357ms |
total: | 648ms |
0 / 0 |