powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Поиск: Искать ответы на сообщение: #365707  
11 сообщений из 11, страница 1 из 1
Microsoft SQL Server / Транзакции в MS SQL Server
    #365707
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
s62 [игнорируется] 

Спорить с котом о том что 2 * 2 = 4 надоело )
Просто учитывай в работе, что если тебе надо транзакцию в процедуре, то придется делать begin tran ... commit.
Операторы в процедуре НЕ выполняются в одной транзакции, проверяется элементарным экспериментом.

Ну и стандартные советы, постарайся делать транзакции короткими, не надо всю процедуру оборачивать.
...
Изменено: 21.04.2023, 19:29 - Неуловимый Джо
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #365711
cat2
Скрыть профиль Поместить в игнор-лист
Участник
Гесты и игнорируемые идут по CSS
Неуловимый Джо  21.04.2023, 19:27
[игнорируется]
Операторы в процедуре НЕ выполняются в одной транзакции, проверяется элементарным экспериментом.
Ну, давай эксперимент
...
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #365715
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
cat2  21.04.2023, 19:30
[игнорируется]
Неуловимый Джо  21.04.2023, 19:27
[игнорируется]
Операторы в процедуре НЕ выполняются в одной транзакции, проверяется элементарным экспериментом.
Ну, давай эксперимент
Надоело.
Ты не приведешь ссылку, подтверждающую, что операторы в процедуре выполняются в одной транзакции?
...
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #365722
s62
Скрыть профиль Поместить в игнор-лист
Участник
Неуловимый Джо  21.04.2023, 19:27
[игнорируется]
s62 [игнорируется] 

Спорить с котом о том что 2 * 2 = 4 надоело )
Просто учитывай в работе, что если тебе надо транзакцию в процедуре, то придется делать begin tran ... commit.
Операторы в процедуре НЕ выполняются в одной транзакции, проверяется элементарным экспериментом.

Ну и стандартные советы, постарайся делать транзакции короткими, не надо всю процедуру оборачивать.
Спасибо за подсказки и советы. У нас там есть организационные моменты - кто пишет БД, кто программу, второе, что на предприятиях, где работает оборудование, не одна БД и много программ, а обычно одна БД и один экземпляр программы работает. Поэтому я написал прямо в программе вот так.
Код: Delphi
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
procedure TDataModule1.UpdateAnalyzerSources(aAnalyzerId: integer; aSources: TSources);
begin
  AdoConnection1.BeginTrans;
  try
    RemoveAnalyzerSources(aAnalyzerId); //вот тут вообще просто выполняется запрос, по некоторым причинам
    AddAnalyzerSources(aAnalyzerId, aSources); //вот тут вызывается ХП, несколько раз в цикле
    AdoConnection1.CommitTrans;
  except
    on E: Exception do
    begin
      AdoConnection1.RollbackTrans;
      Application.MessageBox(PChar(rsUpdateSourcesFail + E.Message), PChar(Application.Title), MB_OK);
    end;
  end;
end;
Это после того, как в диалоговом окне редактируются Sources заданного Analyzer и пользователь нажал ОК. Тут транзакция, как про это писал и Горбатый Ёж, должна обеспечить логическую целостность: или мы удаляем старые и добавляем новые, или если что-то пошло не так, то возвращаем, как было.
...
Изменено: 21.04.2023, 19:58 - s62
Рейтинг: 1 / 0
Нравится: Ифрит
Microsoft SQL Server / Транзакции в MS SQL Server
    #365726
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
cat2  21.04.2023, 19:54
[игнорируется]
Код: 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.
USE [test]
GO

CREATE TABLE [dbo].[t](
  [t] [int] NULL
) ON [PRIMARY]

GO
insert into t (t) values (0)
insert into t (t) values (0)

go
CREATE PROCEDURE xp

AS
BEGIN
  update t SET t = 1
  update t SET t = 'A' --это откатит транзакцию
  update t SET t = 2

END
GO
select * from t
execute xp
select * from t

GO
drop table t
drop procedure xp
Это не откат транзакции, это просто результат первого селекта.

Закомментируй удаление таблицы.
Выполни скрипт.
Потом выполни отдельно селект
...
Изменено: 21.04.2023, 20:10 - Неуловимый Джо
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #365729
cat2
Скрыть профиль Поместить в игнор-лист
Участник
Гесты и игнорируемые идут по CSS
Неуловимый Джо  21.04.2023, 20:03
[игнорируется]
Это не откат транзакции, это просто результат первого селекта.
Я тоже это понял. Хреновый пример привел
...
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #365730
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
cat2  21.04.2023, 20:07
[игнорируется]
Неуловимый Джо  21.04.2023, 20:03
[игнорируется]
Это не откат транзакции, это просто результат первого селекта.
Я тоже это понял. Хреновый пример привел
почему хреновый.
как раз хороший пример.
Первый апдейт выполнился.

И ОСТАЛСЯ :)
...
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #365731
cat2
Скрыть профиль Поместить в игнор-лист
Участник
Гесты и игнорируемые идут по CSS
Неуловимый Джо  21.04.2023, 20:08
[игнорируется]
cat2  21.04.2023, 20:07
[игнорируется]
Неуловимый Джо  21.04.2023, 20:03
[игнорируется]
Это не откат транзакции, это просто результат первого селекта.
Я тоже это понял. Хреновый пример привел
почему хреновый.
как раз хороший пример.
Первый апдейт выполнился.

И ОСТАЛСЯ :)
Не было события, которое бы прервало транзакцию
...
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #365734
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
cat2  21.04.2023, 20:11
[игнорируется]
Неуловимый Джо  21.04.2023, 20:08
[игнорируется]
cat2  21.04.2023, 20:07
[игнорируется]
Неуловимый Джо  21.04.2023, 20:03
[игнорируется]
Это не откат транзакции, это просто результат первого селекта.
Я тоже это понял. Хреновый пример привел
почему хреновый.
как раз хороший пример.
Первый апдейт выполнился.

И ОСТАЛСЯ :)
Не было события, которое бы прервало транзакцию
блять )))

ладно, теперь точно все :)
...
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #365736
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
cat2 [игнорируется] 

ты ссылку-то приведешь или нет?
...
Рейтинг: 0 / 0
Microsoft SQL Server / Транзакции в MS SQL Server
    #365738
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
cat2 [игнорируется] 

че ты уперся-то?
для тебя это так важно чтоли? :)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Поиск: Искать ответы на сообщение: #365707  
Пользователи онлайн (29): Анонимы (19), sergey11, Гарыныч, Bing Bot, Буся, Yandex Bot, Ветер 2 мин., Разум вселенной 3 мин., Biene Maja 4 мин., Дед-Папыхтет 5 мин., Antonariy 9 мин.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]