Объемы уровня изоляции транзакции

Я согласен с тем, что большинство говорят, лучше всего использовать перечисления при работе с набором констант. Однако, если вы программируете на Android, есть лучшее решение: IntDef Annotation .

@Retention(SOURCE)
@IntDef({NAVIGATION_MODE_STANDARD, NAVIGATION_MODE_LIST,NAVIGATION_MODE_TABS})
public @interface NavigationMode {}
public static final int NAVIGATION_MODE_STANDARD = 0;
public static final int NAVIGATION_MODE_LIST = 1;
public static final int NAVIGATION_MODE_TABS = 2;
...
public abstract void setNavigationMode(@NavigationMode int mode);
@NavigationMode
public abstract int getNavigationMode();

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

40
задан Andrey Morozov 7 January 2015 в 13:31
поделиться

4 ответа

Выполните следующее и убедитесь сами:

CREATE PROCEDURE dbo.KeepsIsolation
AS
BEGIN
PRINT 'Inside sproc that does not change isolation level';
DBCC USEROPTIONS;
END
GO

CREATE PROCEDURE dbo.ChangesIsolation
AS
BEGIN
PRINT 'Inside sproc that changes isolation level';
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
DBCC USEROPTIONS;
END
GO
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
DBCC USEROPTIONS;
EXEC dbo.KeepsIsolation;
DBCC USEROPTIONS;
EXEC dbo.ChangesIsolation;
-- demonstrates that isolation level restored to REPEATABLE READ after exiting the procedure
    DBCC USEROPTIONS;
36
ответ дан 27 November 2019 в 01:37
поделиться

DBCC USEROPTIONS отобразит текущий уровень изоляции вместе со всеми другими параметрами SET.

14
ответ дан 27 November 2019 в 01:37
поделиться

Из книг на линии

Только одна из ОТДЕЛЕНИЯ ТРАНЗАКЦИИ Опции УРОВНЯ можно установить за раз, и он остается установленным для этого соединения пока он не будет явно изменен. это становится поведением по умолчанию, если вариант оптимизации указан в уровень таблицы в предложении FROM оператор.

4
ответ дан 27 November 2019 в 01:37
поделиться

Уровень изоляции не откатывается вместе с транзакцией.

Уровень изоляции остается текущим, даже если вы вызываете процедуры и функции.

2
ответ дан 27 November 2019 в 01:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: