User defined transaction ошибка что это

Почему транзакция отклонена: все причины

Расскажем, почему банк отклоняет транзакцию…

На вопрос, почему транзакция отклонена, существует, как минимум, несколько ответов. Проблема может заключаться как в самой карте, так и в работе банка-эмитента.

Сегодня узнаем — что делать, если банк получателя отклонил транзакцию и какие причины этого сбоя существуют.

Причины отклонения транзакции

Владельцу карты, обычно, самостоятельно приходиться разбираться, почему не проходит транзакция: большинство банков причины не сообщают.

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

Проблемы с картой возникают в следующих случаях:

Проблема, почему отклонена транзакция, возникнет и в случае, когда на счету недостаточно денежных средств для совершения той или иной транзакции. Нужно посмотреть баланс и если средств недостаточно — пополнить карту, либо — выбрать другой вариант оплаты.

К любой банковской карте привязывается номер телефона. Если транзакция отклоняется, значит не был введён проверочный СМС-код.

Банк отклонил транзакцию: что делать

В первую очередь, важно установить причину этого сбоя. Если дело в технической ошибке на сайте магазина, операцию можно попробовать провести позже. Если же транзакция отклоняется и через несколько часов, после возникновения первого сбоя, то нужно связаться с поддержкой магазина и максимально подробно описать сложившуюся ситуацию.

Транзакция отклонена оператором

В некоторых случаях, транзакция может отклоняться, если в системе существует вредоносный код.

Нужно установить Антивирус Касперского и запустить полную проверку системы. Если заблокирована сама карта, во многих случаях, её можно разблокировать просто позвонив в банк. Достаточно сообщить ФИО и одно кодовое слово

Выяснив, почему транзакция отклонена, устранить возникшую проблему с оплатой получится максимально быстро. В любом случае, в первую очередь, необходимо проверить баланс карты — скорее всего на ней просто не достаточно средств. Лишь после этого нужно пытаться решить возникшую проблему.

Источник

Коды ошибок Visa/MasterCard/МИР

В данной статье собраны коды ошибок действующих банков-эквайеров.

Часто встречающиеся ошибки:

Код 05 – отказ эмитента без указания причины

Код 17 – отказать, отклонено пользователем карты

Код 41 – утерянная карта

Код 43 – украденная карта

Код 51 – недостаточно средств для проведения операции

Код 57 – недопустимый тип операции для данного типа карты (например, попытка оплаты в магазине по карте предназначенной только для снятия наличных)

Код 61 – превышение максимальной суммы операции или количества попыток для данной карты; превышен лимит на терминале продавца; недостаточно средств на счете продавца, в случае выплат (более точное описание смотрите ниже, исходя из обслуживающего банка)

Код 62 – заблокированная карта

Код 65 – превышение максимального количества операции для данной карты

Код 83 – ошибка сети (технические проблемы)

Код 91 – эмитент недоступен (технические проблемы на стороне банка-эмитента)

Код 96 – системная ошибка/невозможно связаться с банком, который выдал карту (требуется сверка с эквайером)

Полный список кодов ПАО « Промсвязьбанк » :

Result CodeDescriptionОписание
0ApprovedОперация прошла успешно
1Call your bankПозвоните в свой банк
3Invalid merchantНедействительный продавец
4Your card is restrictedОграничение в проведении операции на стороне эмитента
5Transaction declinedОперация отклонена без указания причины
12Invalid transactionНедействительная операция, возможно ошибки в параметрах запроса к платёжной системе
13Invalid amountНедопустимая сумма
14No such cardТакая карта не существует
15No such card/issuerНет такой карты / эмитента
20Invalid responseНеверный ответ
30Format errorОшибка в параметрах запроса к платёжной системе
41Lost cardКарта утеряна (статус установлен у эмитента)
43Stolen cardКарта украдена
51Not sufficient fundsНедостаточно средств
54Expired cardСрок действия карты истёк
55Incorrect PINНеверный PIN-код
57Not permitted to clientОперация не разрешена для клиента (как правило, о тказ приходит со стороны платёжной системы)
58Not permitted to merchantНе разрешено продавцу (заблокирован терминал)
61Exceeds amount limitСумма операции превысила допустимый лимит (также, возможен отказ от платёжной системы)
62Restricted cardЗапрещённая карта
63Security violationНарушение безопасности
65Exceeds frequency limitПревышен лимит
75PIN tries exceededПревышено количество попыток ввода PIN-кода
76Wrong PIN,tries exceededНеверный PIN-код, количество попыток превышено
82Time-out at issuerТайм-аут при соединении с эмитентом
83Transaction failedТранзакция неуспешна
86Unable to verify PINНевозможно проверить PIN-код
89Authentication failureОшибка аутентификации
91Issuer unavailableЭмитент недоступен
93Violation of lawОперация отклонена. Держателю необходимо обратиться в свой банк
95Reconcile errorВозникает, когда операция была уже проведена.
96System malfunctionСистемная ошибка \ Возможно ошибки в параметрах запроса к платёжной системе
-2Bad CGI requestНеверно сформирован запрос к платёжному шлюзу
-3No or Invalid response receivedПлатёжный шлюз вовремя не получил ответ. Статус операции при этом может быть успешным или неуспешным.
-4Server is not respondingСервер не отвечает
-5Connect failedСбой соединения
-8Error in card number fieldОшибка в поле номера карты
-9Error in card expiration date fieldВведена неверная дата срока действия карты
-10Error in amount fieldОшибка в поле суммы
-11Error in currency fieldОшибка в поле валюты
-12Error in merchant terminal fieldНекорректный запрос к платежному шлюзу
-17Access deniedОтказано в доступе (Возможно ошибка при формировании P_SIGN)
-18Error in CVC2 or CVC2 Description fieldsОшибка в поле CVC2
-19Authentication failedАутентификация прошла неуспешно (3d-secure), возможны другие причины.
-20Expired transactionВремя проведения операции превышает значение параметра TIMESTAMP
-21Duplicate transactionОтправлен повторный запрос с идентичными параметрами
70001Not sufficient fundsНедостаточно средств на счете.

Полный список кодов ПАО Банк «ФК Открытие»:

Result CodeDescriptionОписание
00ApprovedУспешная транзакция
01Refer to card issuerОбратитесь к эмитенту карты
02Refer to card issuer, special conditionОбратитесь к эмитенту карты, особое условие
03Invalid merchant or service providerНедействительный идентификатор продавца
04Pickup cardИзъять карту
05Do not honorТранзакция была отклонена эмитентом без объяснения причин
06ErrorЭмитент карты вернул ошибку без дополнительных объяснений
07Pickup card, special condition (other than lost/stolen card)Изъять карту, специальные условия
08Honor with identificationНе пройдена идентификация, проблема с идентификацией
09Request in progressВыполняется запрос
10Approved for partial amountОдобрено для частичной суммы
11Approved, VIP Approved, VIP programОдобрено для VIP, программа VIP
12Invalid transactionЗапрошенная транзакция не поддерживается или недействительна для представленного номера карты
13Invalid amountСумма превышает лимиты, установленные эмитентом для данного типа транзакции
14Invalid card (no such number)Эмитент указывает, что эта карта недействительна.
15No such issuerНомер эмитента карты недействителен
16Approved, update track 3Утверждено, обновить
17Customer cancellationОтмена клиентом
18Customer disputeОткрыт спор с клиентом
19Re-enter transactionКлиент должен повторно отправить транзакцию
20Invalid responseНеверный ответ
21No action takenНикаких действий не предпринимается. Эмитент отказался без других объяснений
22Suspected malfunctionПредполагаемая неисправность
23Unacceptable transaction feeНеприемлемая комиссия за транзакцию
24File update not supportedОбновление файла не поддерживается
25Unable to locate recordНевозможно найти запись
26Duplicate recordДублирующая запись
27File update edit errorОшибка редактирования обновления файла
28File update file lockedФайл/обновления файла заблокировано
29not usedне используется
30Format errorОшибка формата
31Bank not supportedБанк не поддерживается коммутатором
32Completed partiallyЗавершено частично
33Expired card, pick-upСрок действия карты истек
34Issuer suspects fraud, pick-up cardЭмитент карты подозревает мошенничество
35Contact acquirer, pick-upОбратиться к эмитенту карты
36Restricted card, pick-upОграничено эмитентом карты
37Call ECHO security, pick-upОбратитесь в службу безопасности
38PIN tries exceeded, pick-upКоличество попыток получения PIN-кода превышает лимиты эмитента
39No credit accountНет кредитного счета
40Function not supportedЗапрошенная функция не поддерживается
41Pickup card (lost card)Карта была утеряна
42No universal accountНет универсальной учетной записи
43Pickup card (stolen card)Карта была украдена
44No investment accountНет инвестиционного счета
4550 not usedне используется
51Not sufficient fundsНедостаточно средств на карте
52No checking accountНет текущего счета
53No savings accountНет сберегательного счета
54Expired cardСрок действия карты истек
55Incorrect PINНеправильный PIN-код держателя карты
56No card recordНет такой карты
57Transaction not permitted to cardholderОперация не разрешена держателю карты. Карта не разрешена для запрошенного типа транзакции.
58Transaction not permitted on terminalТранзакция не разрешена на терминале. Продавцу запрещен этот тип транзакции (заблокирован терминал; сработало ограничение и т.д. необходимо уточнять подробности у эквайера)
59Suspected fraudПредполагаемое мошенничество
60Contact ECHOСвязаться с службой безопасности
61Exceeds withdrawal limit
62Restricted cardКарта заблокирована
63Security violationНарушение безопасности. Карта заблокирована
64Original amount incorrectНеверная исходная сумма
65Activity count limit exceededПревышено допустимое количество ежедневных транзакций
66Call acquirer securityСвязаться со службой безопасности эквайера
67not usedне используется
68Response received too lateОтвет получен слишком поздно
6974 not usedне используется
75PIN tries exceededПревышено допустимое количество попыток ввода PIN-кода
76Invalid «to» accountНеверный счет. Дебетового счета не существует
77Invalid «from» accountНедействительный счет. Кредитный счет не существует
78Invalid account specified (general)Связанная учетная запись с номером карты недействительна или не существует
79Already reversedУже отменено
80Visa transactions: credit issuer unavailableОперации с Visa: эмитент недоступен
81PIN cryptographic error foundОбнаружена криптографическая ошибка PIN-кода
82Negative CAM, dCVV, iCVV, or CVV resultsНекорректный CAM, dCVV, iCVV или CVV
83Unable to verify PINНевозможно проверить PIN-код
84Invalid authorization life cycleПросроченная авторизация
85not usedне используется
86Cannot verify PINНевозможно проверить PIN-код
87Network UnavailableСеть недоступна
88Invalid CVC2Ошибочно введенный cvc2
89Ineligible to receive financial position informationНевозможно получить финансовую информацию
90Cut-off in progressОтключение в процессе
91Issuer or switch inoperativeБанк-эмитент недоступен
92Routing errorОшибка маршрутизации
93Violation of lawНарушение закона
94Duplicate transactionДублирующая транзакция
95Reconcile errorОшибка согласования/ошибка при расчетах с МПС/НСПК
96System malfunctionПроизошла системная ошибка
97not usedне используется
98Exceeds cash limitПревышен денежный лимит
-2Bad CGI requestЗапрос не прошел CGI-проверку
-3No or Invalid response receivedХост эквайрера (NS) не отвечает
-4Server is not respondingНет соединения с хостом эквайрера
-5Connect failedОшибка соединения с хостом эквайрера (NS) во время обработки транзакции
-6Configuration errorОшибка настройки модуля e-Gateway
-7Incorrect response from the acquirer hostНекорректный ответа хоста эквайрера (NS), например, отсутствуют
обязательные поля
-8Error in card number fieldОшибка в поле «Card number» запроса
-9Error in card expiration date fieldОшибка в поле «Card expiration date» запроса
-10Error in amount fieldОшибка в поле «Amount» запроса
-11Error in currency fieldОшибка в поле «Currency» запроса
-12Error in merchant terminal fieldОшибка в поле «Merchant ID» запроса
-13System errorIP-адрес источника транзакции (обычно IP торговца) не соответствует
ожидаемому
-14No connectionНет соединения с PIN-клавиатурой Интернет-терминала либо программа-агент
на компьютере/рабочей станции Интернет-терминала не запущена
-15Error in the «RRN» field of the requestОшибка в поле «RRN» запроса
-16Another transaction is in progress on the terminalНа терминале выполняется другая транзакция
-17The terminal is denied access to the e-Gateway moduleТерминалу отказано в доступе к модулю e-Gateway
-18Error in the «CVC2» or «CVC2 Description» field of the requestОшибка в поле «CVC2» или «CVC2 Description» запроса
-19Error in request for authentication information or authentication failedОшибка в запросе на аутентификационную информацию либо аутентификация неуспешна
-20Permissible time interval exceededПревышен допустимый временной интервал (по умолчанию – 1 час) между значением поля «Time Stamp» запроса и временем модуля e-Gateway
-21Transaction has already been completedТранзакция уже выполнена
-22Transaction contains invalid authentication informationТранзакция содержит ошибочную аутентификационную информацию
-23Error in transaction contextОшибка в контексте транзакции
-24Inconsistency in the context of a transactionНесоответствие в контексте транзакции
-25Transaction aborted by userТранзакция прервана пользователем
-26Invalid BIN of the cardНеверный BIN карты
-27Seller name errorОшибка в имени продавца
-28Error in additional dataОшибка в дополнительных данных
-29Error in authentication link (damaged or duplicated)Ошибка в ссылке аутентификации (повреждена или дублируется)
-30Transaction was rejected as fraudulentТранзакция отклонена как мошенническая
-31Transaction in progressТранзакция в процессе выполнения
-32Re-declined transactionПовторная отклоненная транзакция
-33client authentication in progressТранзакция в процессе аутентификации клиента с помощью авторизации случайной суммы или одноразового случайного кода
-34MasterCard Installment транзакция в процессе выбора пользователем способа оплаты
-35MasterCard Installment транзакция в процессе выбора пользователем способа оплаты была отклонена автоматически после превышения лимита времени на эту операцию
-36MasterCard Installment транзакция в процессе выбора пользователем способа оплаты была отклонена самим пользователем

Полный список кодов АО «Банк Русский Стандарт»:

Коды отказов платежных систем Visa, MasterCard, МИР (общее описание)

Источник

Error and Transaction Handling in SQL Server

Part Two – Commands and Mechanisms

An SQL text by Erland Sommarskog, SQL Server MVP. Latest revision: 2021-12-04.
Copyright applies to this text. See here for font conventions used in this article.

Introduction

This article is the second in a series of three about error and transaction handling in SQL Server. The purpose of the first article was to give you a jumpstart on error handling without going into the very many details of error handling in SQL Server. On the other hand, the focus of this part is exactly that: a detailed description of the commands for error and transaction handling and what can happen when an error occurs during the execution of a stored procedure or similar. In Part Three, I use this knowledge as a base for a discussion on how we should implement error handling in SQL Server in different situations. In addition to the three main parts, there are three appendixes that discuss special topics: linked servers, the CLR and Service Broker respectively.

Part One was intended for everyone, including the very unexperienced reader. In contrast, Parts Two and Three and the appendixes assume that you have some general programming experience, although necessarily not with SQL Server. Parts Two and Three are also considerably longer. If you arrived directly to this article from elsewhere on the web, I recommend that you read Part One first, since the examples in this article make use of error_handler_sp which I introduce in the jumpstart article.

This article aims at guiding the reader through this maze. In the first chapter after this introduction I look at the components of an error message. In chapter three, I cover the basics for transactions in SQL Server and in chapter four I cover statements that one way or another are related to error handling. Then we come to chapter five which is the centrepiece of this article: I attempt to classify errors from the different actions SQL Server may take in case of an error. In chapter six I discuss special contexts where the rules are altered one way or another. The article closes with three shorter chapters: one on additional commands for error and transaction control, one that covers transaction and error handling in natively compiled stored procedures in SQL 2014 and finally there is a chapter about various odd situations that fall outside of the other patterns.

Index of All Error-Handling Articles

Here follows a list of all articles in this series:

Appendix 2 – CLR. (Extends both Parts Two and Three.)

All the articles above are for SQL 2005 and later. For those who still are on SQL 2000, there are two older articles:

Dedication


The Anatomy of an Error Message

A message returned from SQL Server through the TDS protocol contains seven components. Here is an example of such a message as it appears in SQL Server Management Studio (SSMS):

Msg 547, Level 16, State 0, Procedure delete_order, Line 2

The DELETE statement conflicted with the REFERENCE constraint «FK_Order_Details_Orders». The conflict occurred in database «Northwind», table «dbo.Order Details», column ‘OrderID’.

Server – The server the error originated from. SSMS does not display this item, but other tools such as SQLCMD do.

Severity level – This value, 16 in this example, indicates how serious the error is in its own peculiar way. Here is the short story: levels 0-9 are purely informational messages. Level 10 never occurs. Levels 11-16 are regular SQL errors like constraint violations, permission errors etc. Level 17-25 are various resource and corruption errors. If the severity is ≥ 20, the connection is terminated. I go into a little more detail in the following section.

Procedure – If the error occurred in a stored procedure, trigger or user-defined function, the name appears here. If the error is from an ad-hoc batch or from dynamic SQL, this component is not included in the error message. It can pay off to give attention to the procedure name. When running an INSERT or an UPDATE statement you may get an error message which does not seem to fit at all. But if you look at the procedure name, you may find that the error message comes from a trigger. On SQL 2016 and earlier, you always get the procedure name without the schema. On SQL 2017 and later, the schema appears if it was included in the EXEC statement. See further the discussion of error_procedure() in the section error_message() & co below.

Line – On which line in the procedure or batch the error occurred. If the line number is 0, this indicates that something went wrong in the call to the procedure (or when the procedure exited). The line number typically points to the line where the failing statement starts. For a compilation error, it can be a line within the statement where SQL Server thinks you went wrong. Beware that recent versions of SSMS may modify the line number, see the section Line Numbers in SSMS below.

Message text – The actual text of the error message. That is, the text in red starting with The DELETE statement. in the example above. The text The statement has been terminated is a separate message, as discussed below.

More Details on the Severity Levels

The severity level is a somewhat confusing matter. The topic Database Engine Error Severities in Books Online attempts to document the severity levels, but I’m not sure things are as exact as Books Online would have it. Here is my summary of what I think is relevant about severity levels:

«False» Error Messages

There are some «false» error messages. That is, messages that do not come from SQL Server, but where the API or the tool still present them in that format. One you may see in SSMS is this:

Msg 0, Level 11, State 0, Line 0

A severe error occurred on the current command. The results, if any, should be discarded.

The level for this error is either 11 or 20. Sometimes you get two messages, one with each level. The error indicates that there was an internal error somewhere, be that in SQL Server or in SSMS (or more precisely in SqlClient). When you see this message, the connection has typically been closed. My theory is that internal errors in SQL Server result in level 20, while an exception in SSMS/SqlClient only produces a level 11 message, but this is nothing I have been able to confirm. I have found when working with this series of articles that even if the exception occurs in the client API, SQL Server may still be the culprit by sending incorrect TDS packets across the wire.

You may also see errors without a header line. Here is one example that occurred with older versions of SQL Server Management Studio:

When I run this in SSMS 2014 or older versions, I see this:

An error occurred while executing batch. Error message is: Input string was not in a correct format.

This is a bug in SqlClient which is not able to cope with datetimeoffset data in an sql_variant value. You don’t get this particular error in SQLCMD or in the old Query Analyzer. Nor does it appear in SSMS 17.9.1, the current version as I updated this section.

These errors are not particularly common, but it is good to be able to recognise them when you encounter them, so you don’t waste your time with trying to understand what is wrong with your SQL. When it happens, try SQLCMD or OSQL instead and see how they react. If they too are spooky, the issue is down in SQL Server, but if they play well the issue in is SSMS/SqlClient.

Line Numbers in SSMS

Up to SQL 2012, SQL Server Management Studio reported the line number from SQL Server as-is, but starting with SSMS 2014, SSMS now modifies the line number so that refers to a the line number in the query window. Unfortunately, this lead to a major deficiency in SSMS 2014 which has been addressed in SSMS 2016.

Note : «SSMS 2016» is a somewhat inaccurate moniker. Starting with SQL 2016, SSMS is no longer part of the SQL Server distribution as such, but it leads its own life with monthly updates. SSMS is now a free download and you can run SSMS against all versions from SQL 2000 and up (save for connection to older versions of Integration Services.)

To see this difference, consider this script:

In all query tools up to SSMS 2012, the output is:

This is the first batch

This is the second batch

Msg 102, Level 15, State 1, Line 1

Incorrect syntax near ‘and it has a syntax error’.

The error is reported to be on line 1, because that is how SQL Server sees the script. (Recall that go is a batch separator that only has a meaning for the query tool, and SQL Server never sees it.) Starting with SSMS 2014, the output is:

This is the first batch

This is the second batch

Msg 102, Level 15, State 1, Line 5

Incorrect syntax near ‘and it has a syntax error’.

The line number is now reported with regards to the script, which certainly can be helpful at times. (But since you always can double-click an error message to find where the error is, I don’t find this extremely important.)

In their enthusiasm, Microsoft overlooked the possibility that the error may come from a stored procedure. Consider this script:

The output in SSMS 2014 is:

Msg 220, Level 16, State 2, Procedure CityOfTinyLites, Line 7

Arithmetic overflow error for data type tinyint, value = 800.

This is plain wrong, since there is no line 7 in that procedure. With SSMS 2014, to understand where an error occurred inside a stored procedure, you need to know on which line the batch that includes the EXEC statement starts and then deduct that line number from the line number in the error message and add one to get the line number in the stored procedure. You cannot say that this is very convenient. Thankfully, in SSMS 2016 addresses this, and you get this output:

Msg 220, Level 16, State 2, Procedure CityOfTinyLites, Line 2 [Batch Start Line 5]

Arithmetic overflow error for data type tinyint, value = 800.

The statement has been terminated.

That is, when there is a procedure name in the error message, SSMS 2016 reports the the unmodified line number in the procedure, and it also adds information about where in the window the batch that includes the procedure call started.

Note that there is still is a problem if the error occurs in a batch of dynamic SQL. Consider this silly script:

The output with SSMS 2014 and later is:

Msg 2812, Level 16, State 62, Line 4

Could not find stored procedure ‘Rat’.

Because there is no way for SSMS to tell whether the error occurred in a statement in the query window or in a batch of dynamic SQL (SQL Server does not provide this information), it assumes the former and reports the error message to be on the wrong line. To be fair, error messages from dynamic SQL that occurs in a procedure three levels deep have always been problematic, because you don’t have any context.

I like to point out that what I have said here applies to SSMS only. SQLCMD and other command-line tools do not modify the line number.

Note : With the exception of this section, the output for all examples in this series of articles has been produced with SSMS 2012. Thus, if you are using a later version of SSMS, you may see differences with regards to the line number.

Transaction Basics in SQL Server

Atomic – A transaction should either be performed in whole or not at all.

Consistent – A transaction should take the database from one consistent state to another with regards to constraints and other integrity checks like triggers.

Isolated – The results of an on-going transaction should not be visible to other transactions, and depending on isolation level, the transaction should not see changes performed by other transactions.

Durable – Once completed, the result of the transaction should be persisted and survive server crashes.

A full discussion how all these four properties are implemented in SQL Server is far beyond the scope of this article. Our focus is error handling, but as part of error handling we must understand how we can uphold the ACID principle in case of an error. The most important property is the first one, atomicity. That is, in the very most cases our error handling should make sure that in case of an error the transaction performs nothing at all.

Note : For a longer discussion about ACID as such, see this article in Wikipedia.

In this chapter, I will look the basic concepts and commands for transaction handling in SQL Server. I’m saving more exotic variations to a later chapter.

Auto-Commit

In an ANSI-compliant database, the normal procedure is to start a transaction, perform one or more updates and then commit the transaction whereupon it becomes durable. If you perform an operation and no explicit transaction has been started, the database engine will start an implicit transaction that you need to commit explicitly.

A system transaction can encompass more operations than just the statement itself. One example is an update performed through a cascading constraint. More important for you as a programmer are triggers – triggers always execute in the context of the statement that fired the transaction. This is very logical, since the purpose of a trigger is to uphold the C in ACID, consistency. That is, the trigger is supposed perform validations or cascading updates that cannot be implemented by constraints. A third example is a stored procedure invoked through INSERT-EXEC ; it executes in the context of a transaction defined by the INSERT statement.

User-Defined Transactions

As long as the transaction is open, the updates performed by the transaction are invisible to other processes, unless they use the isolation level READ UNCOMMITTED (a.k.a. NOLOCK ). Readers that use other isolation levels that attempt to access the modified rows will be blocked, or, if they use some form of snapshot isolation, see an older version of the row.

Just like a system transaction, a user-defined transaction can be rolled back. This can happen of three different reasons:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *