Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
Привет, раньше имел дело с Firebird, где транзакции прописывают (по крайне мере я прописывал :) ) явно. И с MySQL на сайте, где вообще без транзакций было. Сейчас имею дело с программами, которые работают с MS SQL Server. Насколько я смутно припоминаю, в нем есть что-то насчет неявных транзакций, которые имплицитно (сами, ты этого не делаешь явно) стартуются и заканчиваются. Короче я в коде не вижу ничего про транзакции. И сам что-то делал, менял, как-то ничего про них не делал тоже. Да, программа на Delphi, компоненты для доступа - dbGo (обертка вокруг ADO). Сейчас мне надо сделать несколько последовательных действий, которые хотелось бы выполнить в одной транзакции, чтобы или выполнить всё или откатить всё. Я вижу у компонента TAdoConnection методы BeginTrans, CommitTrans, RollbackTrans. В принципе понятно, что писать. Но вот такой вопрос, а как это будет взаимодействовать с другими процедурами, которые с неявными (или неявной) транзакциями? Будет ли всё остальное, то, что работало до этого, работать нормально, если я напишу что-то типа Код: Delphi 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Понятно, что можно поэкспериментировать, но так, теоретически, кто-нибудь может сказать что-то про это? ... |
|||
:
Изменено: 18.04.2023, 17:33 - s62
Нравится:
Не нравится:
|
|||
18.04.2023, 17:28 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|
---|---|
#18+
s62 [игнорируется] почитал вот это https://learn.microsoft.com/ru-ru/sql/t-sql/language-elements/transactions-transact-sql?view=sql-server-ver16 похоже, что должно работать, что следующий запрос автоматически стартует новую транзакцию. ... |
|
:
|
|
18.04.2023, 17:36 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|
---|---|
#18+
Код: Delphi 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Если надо выполнить несколько операторов, то их надо обернуть в xp. В самой хп никаких транзакций открывать не надо, так как по умолчанию хп выполняется в контексте одной транзакции ... |
|
:
|
|
20.04.2023, 16:52 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|
---|---|
#18+
Открывать и закрывать транзакции на клиенте - дурной тон. Как с вами тяжело... ... |
|
:
|
|
20.04.2023, 16:56 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
Еще один решил потролить? По существу возражения есть? Как радостно открывать транзакции на клиенте? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2023, 17:04 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
По существу возражения есть? При этом оба процесса могут быть запущены на одном клиенте. Давай, расскажи где ты будешь стартовать транзакции, если не на клиенте. Хотя ты наверное скажешь, что не надо стартовать, достаточно зафиксировать изменения. Только вопрос, насколько ты уверен с том, что в текущей транзакции не были внесены ранее каким либо изменения помимо интересующего бизнес процесса. И ещё как ты будешь обрабатывать ошибки и насколько хорошо будет видно по коду в каком процессе возникает ошибка? ... |
|||
:
Изменено: 20.04.2023, 17:16 - Горбатый ёж
Нравится:
Не нравится:
|
|||
20.04.2023, 17:15 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
По существу возражения есть? При этом оба процесса могут быть запущены на одном клиенте. Давай, расскажи где ты будешь стартовать транзакции, если не на клиенте. Хотя ты наверное скажешь, что не надо стартовать, достаточно зафиксировать изменения. Только вопрос, насколько ты уверен с том, что в текущей транзакции не были внесены ранее каким либо изменения помимо интересующего бизнес процесса. И ещё как ты будешь обрабатывать ошибки и насколько хорошо будет видно по коду в каком процессе возникает ошибка? Создаю три ХП. Потом создаю еще две. В одной вызываются две из трех, в другой - все три ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2023, 19:13 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
В одной вызываются две из трех, в другой - все три ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2023, 20:33 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
В одной вызываются две из трех, в другой - все три Получаем XP1, XP2, XP3 Создаем XP4, в нем вызываются XP1, XP2, XP3 Создаем XP5, в нем вызываются XP1, XP2 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2023, 21:20 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
В одной вызываются две из трех, в другой - все три Получаем XP1, XP2, XP3 Создаем XP4, в нем вызываются XP1, XP2, XP3 Создаем XP5, в нем вызываются XP1, XP2 Код потом такой разбирать просто чудесно. Но ещё раз вопрос, в чём ты эти процедуры запускать будешь? Уж не в транзакциях ли? А как ты можешь быть уверен, что у тебя в рамках транзакции выполнена только одна и нужная процедура? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2023, 22:21 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
В самой хп никаких транзакций открывать не надо, так как по умолчанию хп выполняется в контексте одной транзакции ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2023, 23:57 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
Нет ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2023, 17:01 |
|
Microsoft SQL Server / Транзакции в MS SQL Server
|
|||
---|---|---|---|
#18+
В одной вызываются две из трех, в другой - все три Получаем XP1, XP2, XP3 Создаем XP4, в нем вызываются XP1, XP2, XP3 Создаем XP5, в нем вызываются XP1, XP2 Код потом такой разбирать просто чудесно. Но ещё раз вопрос, в чём ты эти процедуры запускать будешь? Уж не в транзакциях ли? А как ты можешь быть уверен, что у тебя в рамках транзакции выполнена только одна и нужная процедура? Ну назови XP4 PizdecAndBliat , а XP5 - PizdecOnly Я уже писал, что открытие транзакции будут обеспечивать сами хранимые процедуры. Любая ошибка любого запроса внутри ХП, в том числе и выполнения другой хранимой процедуры, вызывает откат действий всей хранимой процедуры. То есть в теле хранимой процедуры XP4 конечно можно написать: Код: SQL 1. 2. 3. 4. 5.
Мы ведь про MS SQL говорим? В других СУБД может быть и не так, я не знаю ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2023, 17:30 |
|
Start [/forum/search.php?do_search=1&replies_to=362109&author_mode=wrote_post]: |
0ms |
get settings: |
1ms |
get forum list: |
4ms |
searching: |
14ms |
get settings: |
1ms |
get forum list: |
5ms |
get found posts: |
27ms |
track hit: |
23ms |
get online users: |
63ms |
check new: |
2ms |
others: | 330ms |
total: | 470ms |
0 / 0 |