powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / понятие транзакции. просьба разъяснить.
24 сообщений из 74, страница 3 из 3
понятие транзакции. просьба разъяснить.
    #39679840
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевичandron81ну вот и где тут логика ? поэтому любой селект этонедотранзакция, если его нельзя откатить и нечего писать в журнал .Вы не поверите, но delete, который ничего не удалил, в журнал тоже ничего не запишет. Как вам такая логика?Тогда "транзакция" волшебным образом превращается в "недотранзакцию" :-)
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39679842
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgГавриленко Сергей Алексеевичпропущено...
Вы не поверите, но delete, который ничего не удалил, в журнал тоже ничего не запишет. Как вам такая логика?Тогда "транзакция" волшебным образом превращается в "недотранзакцию" :-)Осталось понять, зачем отличать "транзакции" от "недотранзакций" в зависимости от того, произошла ли в них модификация данных или нет. У меня вот не выходит.
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39679845
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевичalexeyvgпропущено...
Тогда "транзакция" волшебным образом превращается в "недотранзакцию" :-)Осталось понять, зачем отличать "транзакции" от "недотранзакций" в зависимости от того, произошла ли в них модификация данных или нет. У меня вот не выходит.

зачем, а вот на собеседовании как бы Вы ответили ?

что называется транзакцией и является ли транзакция select * from table транзакцией с точки зрения MS SQL Server.
товарищ правда для Postgre сказал , что да является. и был получен минус !
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39679846
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевичalexeyvgпропущено...
Тогда "транзакция" волшебным образом превращается в "недотранзакцию" :-)Осталось понять, зачем отличать "транзакции" от "недотранзакций" в зависимости от того, произошла ли в них модификация данных или нет. У меня вот не выходит.Ну, если понимать транзакцию как некое "декларативное объявление атомарного изменения состояния информационной системы", то вполне можно так говорить. Транзакция, которая не изменяла данных, просто-напросто не существовала, при таком взгляде.

Но для реальной СУБД, даже так - для реальной информационной системы, разницы действительно никакой, это определённые статусы, структуры данных, идентификаторы и т.д., и при разных операциях, участвующих в транзакции, просто будут количественно разные действия в системе - но не качественно.
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39679847
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgГавриленко Сергей Алексеевичпропущено...
Осталось понять, зачем отличать "транзакции" от "недотранзакций" в зависимости от того, произошла ли в них модификация данных или нет. У меня вот не выходит.Ну, если понимать транзакцию как некое "декларативное объявление атомарного изменения состояния информационной системы", то вполне можно так говорить. Транзакция, которая не изменяла данных, просто-напросто не существовала, при таком взгляде.

Но для реальной СУБД, даже так - для реальной информационной системы, разницы действительно никакой, это определённые статусы, структуры данных, идентификаторы и т.д., и при разных операциях, участвующих в транзакции, просто будут количественно разные действия в системе - но не качественно.

что значит декларативное ? прокомментируйте , пож
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39679848
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81зачем, а вот на собеседовании как бы Вы ответили ?На собеседовании я бы постарался ответить так, как понравится спрашивающему. Угадать сложно, это да.
Я практик, и если в доке написано, что SELECT выполняется в транзакции, значит для меня так и есть.
Но если спрашивает ХР-менеджер по листочку с цитатами из учебника, то мой ответ может ему не понравится.
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39679849
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81зачем, а вот на собеседовании как бы Вы ответили ? ... является ли транзакция select * from table транзакцией с точки зрения MS SQLЯ бы сказал, что в MSDN английским по-белому написано, что:
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/transactions-transact-sql?view=sql-server-2017 Autocommit transactions
Each individual statement is a transaction.
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39679852
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81alexeyvgпропущено...
Ну, если понимать транзакцию как некое "декларативное объявление атомарного изменения состояния информационной системы", то вполне можно так говорить. Транзакция, которая не изменяла данных, просто-напросто не существовала, при таком взгляде.

Но для реальной СУБД, даже так - для реальной информационной системы, разницы действительно никакой, это определённые статусы, структуры данных, идентификаторы и т.д., и при разных операциях, участвующих в транзакции, просто будут количественно разные действия в системе - но не качественно.

что значит декларативное ? прокомментируйте , пожДекларативное - значит, описательное.

Вот SQL - декларативный язык, стейтмент, например, SELECT, или DELETE, или другой, не описывает последовательность действий, он описывает желаемый результат, который вы задекларировали, написав запрос.

А вот T-SQL - это императивный язык, а не декларативный, хотя и состоит из декларативных стейтментов.

То есть вы описываете последовательность действий, и эти действия выполняются, одно за другим, причём вы можете даже менять эту последовательность, например, операторами IF и т.п.

Т.о. если бы транзакция была декларативной, то вот этот блок описывал бы конечный результат - атомарно привести систему из состояния ДО в состояние ПОСЛЕ:
Код: sql
1.
2.
3.
4.
5.
6.
BEGIN TRANSACTION
update BOOK_PURCH1 set CONTRACTOR = @newname where CONTRACTOR = @oldname
update BOOK_SALES2 set CONTRACTOR = @newname where CONTRACTOR = @oldname
update BOOK_SALES3 set CONTRACTOR = @newname where CONTRACTOR = @oldname
update BOOK_SALES4 set CONTRACTOR = @newname where CONTRACTOR = @oldname
COMMIT TRANSACTION


Но т.к. T-SQL - императивный язык, то операции выполняются последовательно:

Сначала, первой командой, начинается транзакция.
Нету никаких записей в лог, никаких изменений, даже нет SELECT-а, но транзакция уже есть.

Потом в контексте этой транзакции выполняется update BOOK_PURCH1. При этом может быть запись в лог, может и не быть.

Потом в контексте этой транзакции выполняется update BOOK_SALES2, допустим, запись произошла неудачно, изменения не состоялись - и дальше вам, программисту, решать, считать вашу транзакцию неудачной в целом, и откатить (в т.ч. установкой параметра коннекта - откатывать при любых ошибках), или спокойно продолжить делать другие изменения.

Потому что язык T-SQL - императивный, программист сам управляет ходом выполнения программы, а не описывает некий атомарный пакет изменения состояния.

Разумеется, всё это совершенно не согласуется с определением транзакции у Дейта или в Вики, но мы же разбираемся в транзакциях MSSQL, а не в чём то ещё?
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39679854
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgДекларативное - значит, описательное.Вообще, думаю, неудачный термин, может, правильнее говорить - "функциональный"?
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39679856
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ладно, уяснили. Короче говоря транзакция по MS это
each individual statement.

любой оператор, а значит любое действие над базой : чтение , изменение.
Всё !
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39679962
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgalexeyvgДекларативное - значит, описательное.Вообще, думаю, неудачный термин, может, правильнее говорить - "функциональный"?
Не, функциональный - это другое: ЯП, оперирующий функциями в мат. интерпретации. Чистые функции, функции высшего порядка, лямбда-исчисление, и проч. Это лисп, хаскелл, эрланг, F#, и иже с ними. Это всё одинаково далеко и от декларативных, и императивных ЯП.

andron81ладно, уяснили. Короче говоря транзакция по MS это
each individual statement.

любой оператор, а значит любое действие над базой : чтение , изменение.
Всё !
И даже вот это?
Код: sql
1.
exec('');
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39679985
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

разрушим психологию :)

Код: sql
1.
DECLARE @a int; SELECT @a = 1 


тоже не транзакция
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39679989
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

да и тут вы правы. трындец полный с этими транзакциями. по их определению любой код это транзакция . ваш - нет.
Строгости нет у MS в этом плане.
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39679990
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81TaPaK,

да и тут вы правы. трындец полный с этими транзакциями. по их определению любой код это транзакция . ваш - нет.
Строгости нет у MS в этом плане.
всё описано, то что вы взяли самое понятное для вас объяснение и натягиваете сову на глобус, то это ваша проблема а не ms
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39679994
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKandron81TaPaK,

да и тут вы правы. трындец полный с этими транзакциями. по их определению любой код это транзакция . ваш - нет.
Строгости нет у MS в этом плане.
всё описано, то что вы взяли самое понятное для вас объяснение и натягиваете сову на глобус, то это ваша проблема а не ms

и где же описано ?

вот у них этим всё сказано :

Each individual statement is a transaction.
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39680000
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81TaPaKпропущено...

всё описано, то что вы взяли самое понятное для вас объяснение и натягиваете сову на глобус, то это ваша проблема а не ms

и где же описано ?

вот у них этим всё сказано :

Each individual statement is a transaction.

например вот
https://docs.microsoft.com/en-us/sql/t-sql/statements/set-implicit-transactions-transact-sql?view=sql-server-2017
авторSELECT statements that do not select from a table do not start implicit transactions. For example SELECT GETDATE(); or SELECT 1, 'ABC'; do not require transactions.
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39680001
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и в тему когда писать

авторAlthough BEGIN TRANSACTION starts a local transaction, it is not recorded in the transaction log until the application subsequently performs an action that must be recorded in the log, such as executing an INSERT, UPDATE, or DELETE statement. An application can perform actions such as acquiring locks to protect the transaction isolation level of SELECT statements, but nothing is recorded in the log until the application performs a modification action.
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39680002
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот ещё немного занимательного

Код: sql
1.
2.
3.
4.
5.
6.
7.
DECLARE @a TABLE (a INT);

BEGIN TRAN 
	INSERT INTO @a(a) VALUES (1)
ROLLBACK

SELECT * FROM @a
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39680011
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ппц. ИТ-загибаеццо. Жевать на 3 страницы такое простое понятие....
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39680012
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoппц. ИТ-загибаеццо. Жевать на 3 страницы такое простое понятие....
давай, внеси свет в эту пещеру
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39680045
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKвот ещё немного занимательного

Код: sql
1.
2.
3.
4.
5.
6.
7.
DECLARE @a TABLE (a INT);

BEGIN TRAN 
	INSERT INTO @a(a) VALUES (1)
ROLLBACK

SELECT * FROM @a




это значит что инсерт во временную таблицу как бы не транзакция
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39680047
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81это значит что инсерт во временную таблицу как бы не транзакция
а где там временная таблица?
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39680051
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKandron81это значит что инсерт во временную таблицу как бы не транзакция
а где там временная таблица?

тупанул. в переменную таблица.

это такой же пример как и с DECLARE @a int; SELECT @a = 1
...
Рейтинг: 0 / 0
понятие транзакции. просьба разъяснить.
    #39680089
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81тупанул. в переменную таблица.

это такой же пример как и с DECLARE @a int; SELECT @a = 1Я вам уже писал - 21604617 , но, видимо, есть трудности с пониманием.

Пример от TaPaK означает, что манипуляции с табличной переменнлой выполняются в отдельной транзакции, не относящейся к текущей.
...
Рейтинг: 0 / 0
24 сообщений из 74, страница 3 из 3
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / понятие транзакции. просьба разъяснить.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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