в соответствии с mysql docs
Я думаю, что вы должны использовать SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE
если вы хотите сделать это во время операции
или
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
и установить его перед тем начиная сделку так:
$this->db->query('SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;');
$this->db->trans_start();
Вот копия паста из документации:
С ГЛОБАЛЬНОЙ ключевое слово, оператор устанавливает уровень по умолчанию транзакции глобально для всех последующих сессий. Существующие сессии: не затронуты.
С ключевым словом SESSION оператор устанавливает транзакцию по умолчанию для всех последующих транзакций, выполненных в текущем сеансе .
Без ключевого слова SESSION или GLOBAL оператор устанавливает уровень изоляции для следующей (не начатой) транзакции в текущем сеансе.
SET TRANSACTION ИЗОЛЯЦИЯ LEVEL без GLOBAL или сеансу не разрешается в то время как существует активная транзакция
Я попробовал оба способа и установки его ** до того ** сделка не работает для меня. Может быть, транзакция начнет новую сессию? Установка его просто ** после ** начала транзакции отлично работает, используя SET SESSION. – franer