[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка на поддержку транзакций.
Страницы: 1, 2
twin
Цитата (Santehnick @ 18.03.2017 - 15:19)
В примере ты удаляешь нетранзакционную таблицу внутри транзакции, затем делаешь роллбек и всё сыпется. Спрашиваешь как избежать. Тебе отвечают почему так происходит. Ты надуваешь щеки, что тебя это не интересует. Если не интересует, тогда писать такой пример не нужно.
Хорошо, не буду надувать щеки. :) Я собственно получил что хотел, а дорогу в мануал я прекрасно знаю. Понятно, что тебе хочется самоутвердиться. Не стану мешать - законное желание.

Вообще конечно смешно. Ты говоришь, что гадалок нет, а сам пытаешься угадать... да нет. Даже не так. Ты пытаешься применить свои знания туда, где это совсем не нужно. Потому что не знаешь предмета.

Я не меняю поведение. Это нужно мне для дебаггера. Просто хочу выкинуть предупреждение, что он не дебажит таблицы, не поддерживающие транзакции. Именно потому, что это может привести к непредсказуемым результатам. Дебаггер как раз использует транзакцию.

Да, дебаггер используется билдером, так что там все в тему. А принцип Лисков я прекрасно знаю. Кстати, принципы знать нужно не только для того, чтобы их фанатично соблюдать. Но и для того, чтобы осознанно нарушать, где это плезно. Это так, к слову.

Если уж так интересно посмотреть на сниппет, то пожалуйста:

    public function execute($params = null)
{
$sql = $this->createSqlString($params);

if (false === $this->checkEngine($sql)) {
AbcError::logic(' Component PDO: '. ABC_NO_TRANSACTION);
return false;
}

if ($this->pdo->inTransaction()) {
$this->pdo->exec("SAVEPOINT sqldebug");
$this->pdo->query($sql);
$this->pdo->exec("ROLLBACK TO SAVEPOINT sqldebug");
} else {
$this->pdo->beginTransaction();
$this->pdo->query($sql);
$this->pdo->rollback();
}

return parent::execute($params);
}
Вот сейчас доделаю метод checkEngine() и возрадуюсь. :)

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.