SQL | Транзакции
Транзакции - как предохранитель, суть которого заключается в философии "Все запросы внутри текущей транзакции должны завершиться успешно, либо не пройдет ни одна".
Условно при переводе денег с одного банковского счета на другой - важна гарантия, что снимутся с 1 счета и придут на другой, а если произойдет ошибка для пополнения 2 счета или при снятии денег с 1 кошелька, то в текущей транзакции будет ошибка и средства с 1 кошелька не снимутся, т.е, всё будет как прежде (откат запросов).
В противном случае, без транзакций, такой механизм снял бы деньги с 1 счета, но не пополнил бы 2 счет и по сути, деньги пошли бы в воздух.
Причин для ошибки запросов внутри транзакций дохуя, основные - ошибка на стороне клиента (закрыл приложение банка, инет или свет вырубился), либо ошибка на стороне сервера (место закончилось, какая-то внутренняя ошибка и тд).
Начало транзакции объявляется так:
START TRANSACTION:
— и тут уже sql запросы, например снятие денег с 1 счета и перевод этой суммы на 2 счет
COMMIT; - применение изменений или запросов, которые прошли внутри текущей транзакции
ROLLBACK; - для отката транзакции.
Транзакции можно юзать, если не знаете шо за пиздец будет с таблицей или бд после UPDATE или DELETE например, все изменения можно откатить с помощью ROLLBACK или применить с помощью COMMIT (пишутся в самом конце)
Транзакции - как предохранитель, суть которого заключается в философии "Все запросы внутри текущей транзакции должны завершиться успешно, либо не пройдет ни одна".
Условно при переводе денег с одного банковского счета на другой - важна гарантия, что снимутся с 1 счета и придут на другой, а если произойдет ошибка для пополнения 2 счета или при снятии денег с 1 кошелька, то в текущей транзакции будет ошибка и средства с 1 кошелька не снимутся, т.е, всё будет как прежде (откат запросов).
В противном случае, без транзакций, такой механизм снял бы деньги с 1 счета, но не пополнил бы 2 счет и по сути, деньги пошли бы в воздух.
Причин для ошибки запросов внутри транзакций дохуя, основные - ошибка на стороне клиента (закрыл приложение банка, инет или свет вырубился), либо ошибка на стороне сервера (место закончилось, какая-то внутренняя ошибка и тд).
Начало транзакции объявляется так:
START TRANSACTION:
— и тут уже sql запросы, например снятие денег с 1 счета и перевод этой суммы на 2 счет
COMMIT; - применение изменений или запросов, которые прошли внутри текущей транзакции
ROLLBACK; - для отката транзакции.
Транзакции можно юзать, если не знаете шо за пиздец будет с таблицей или бд после UPDATE или DELETE например, все изменения можно откатить с помощью ROLLBACK или применить с помощью COMMIT (пишутся в самом конце)