Как узнать, какие транзакции выполняются первыми? - PullRequest
0 голосов
/ 01 ноября 2019

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

INSERT INTO Students VALUES(’Jason’,50);

UPDATE Students SET mark = mark + 10;

COMMIT

SET TRANSACTION ISOLATION READ COMMITED

INSERT INTO Students VALUES (’Kylie’,70);

SELECT SUM(mark) FROM Students;

COMMIT

Если у меня одновременно выполняются две транзакции, как узнать, что выполняется первым и какие значения будут возвращены запросом? Я понимаю, что Сериализуемый изолят T1. Но более того, я не знаю, как поступить.

1 Ответ

0 голосов
/ 01 ноября 2019

если вы запустите оба одновременно, READ COMMITTED будет ждать завершения SERIALIZABLE. Кстати, кажется, BEGIN TRANSACTION отсутствует на вашем TSQL.

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRANSACTION
   INSERT INTO Students VALUES(’Jason’,50);
   UPDATE Students SET mark = mark + 10;
COMMIT TRANSACTION

SET TRANSACTION ISOLATION READ COMMITTED
BEGIN TRANSACTION
   INSERT INTO Students VALUES (’Kylie’,70);
   SELECT SUM(mark) FROM Students;
COMMIT TRANSACTION
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...