2013-09-11 5 views

ответ

2

Если вы используете версию 11 или выше: Да
Вы можете сделать это с помощью процедуры public.sysdbopen.

  • Просто создайте процедуру с установленной изоляции и фиксации времени
  • Процедура будет действительна только в базе данных, где они были созданы.

Эта процедура будет выполнена, когда пользователь подключится к базе данных. Просто осторожно, если у некоторых пользователей уже есть своя собственная процедура sysdbopen, тогда общедоступная «версия» не будет выполнена, а только собственный пользователь.

create procedure "public".sysdbopen() 
    set isolation to dirty read ; 
    set lock mode to not wait; 
end procedure 
; 
0

В Informix отсутствует концепция уровня изоляции и режима блокировки для каждой базы данных. Оба являются атрибутами клиента базы данных. Это зависит от вашей клиентской библиотеки или инструмента. Например, для описания клиента с белкой здесь: How to Automatically Execute a Command on Connection. Для Odbc вы можете установить уровень изоляции в свойствах DSN на вкладке Environment.

Единственный универсальный метод дан ceinmart. В Informix 11 и выше хранимая процедура sysdbopen выполняется всякий раз, когда устанавливается соединение. Это идеальное место для установки уровня изоляции и режима блокировки. Однако эта хранимая процедура представляет собой один экземпляр для экземпляра Informix, а не «для каждой базы данных». Вам нужно добавить туда некоторую логику: прочитать имя базы данных из dbinfo, а затем применить настройки условно.

Смежные вопросы