В mysql вы запускаете эти команды на дескрипторе БД перед выполнением запросов, таблицы автоматически блокируются:
begin work;
Затем вы выполняете свои запросы или запускаете различные варианты выбора и обновления, используя воспламенитель кода.db handle.
Тогда вы либо
commit;
, либо
rollback;
Любые выбранные вами строки будут заблокированы и не будут прочитаны другими процессами.Если вы хотите, чтобы строки по-прежнему читались, вы можете сделать следующее:
Select ... IN SHARE MODE
Из документации Mysql:
http://dev.mysql.com/doc/refman/5.5/en/select.html
Если вы используете FOR UPDATE смеханизм хранения, который использует блокировки страниц или строк, строки, проверенные запросом, блокируются на запись до конца текущей транзакции.Использование LOCK IN SHARE MODE устанавливает общую блокировку, которая позволяет другим транзакциям читать проверенные строки, но не обновлять или удалять их.См. Раздел 13.3.9.3, «ВЫБРАТЬ ... ДЛЯ ОБНОВЛЕНИЯ и ВЫБРАТЬ ... БЛОКИРОВКА В РЕЖИМЕ ОБЩЕГО ВРЕМЕНИ Блокировка чтения».
Другой человек уже сказал это в комментариях, но из документов CI:
$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...');
$this->db->query('AND YET ANOTHER QUERY...');
$this->db->trans_complete();
trans_start и trans_complete будут выполнять эти запросы для вас на вашем дескрипторе ...
возможно, есть и trans_rollback ...