Транзакции в Kohana

kohana

Внезапно мне понадобились транзакции на вебсайте. Кому это надо — тот знает о чём я. И встал вопрос, как по-возможности культурнее их сделать

Понятно, что всегда можно просто прямыми запросами к базе данных послать START TRANSACTION , COMMIT или ROLLBACK, но некрасиво это.

И вот оказывается есть прямо специальные функции в объекте Database. Вот собственно пример, думаю тут всё понятно.

	    $db = Database::instance();
	    
	    // Start the transactions
	    $db->begin();

	    try {
		DB::insert('users')->values($user1)...
		DB::insert('users')->values($user2)...
		// Insert successful commit the changes
		$db->commit();
	    }
	    catch (Database_Exception $e)
	    {
		// Insert failed. Rolling back changes...
		$db->rollback();
	    }	 

Транзакции в Kohana: 2 комментария

  1. alexey.yu.popkov

    Здравствуйте, а можно ли, туда где строка 9 вставить несколько SELECTов, (например для проверки правильности внесенных в таблицу изменений). Будет ли работать ?

  2. altesack Автор записи

    @ alexey.yu.popkov:
    Внутри незавершённой транзакции пользователь будет видеть все свои изменения. Другие видеть не будут.

Комментарии запрещены.