2016-10-11 4 views
0

Для проверки работоспособности моего кода я помещаю утверждения в различные места в моем коде.Предотвращение фиксации базы данных при утверждении отказа в php

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

Я не мог найти никакого чистого способа достижения этого.

Я использую фреймворк кода.

Любая идея, как достичь этого?

+0

Это не то утверждение assert() для. Просто проверьте наличие ошибок и откат, если увидите его. –

+1

a db, который автоматически фиксирует транзакции при отключении, никогда не должен использоваться. нормальное поведение БД заключается в автоматическом откате, если соединение/транзакция прекращена. –

+0

@John - Да, согласитесь. Ты прав. Функциональность не должна зависеть от assert. В идеале утверждения будут отключены в процессе производства и, следовательно, предотвратят любые подобные откаты от ошибок. Поэтому мы должны явно проверять ошибки и откатываться, если возникает ошибка. – Anuj

ответ

0

Функциональность не должна быть частью утверждения. Если это так, тогда функциональность будет искажена в режиме производства, если утверждения отключены.

Мы можем выполнить дополнительную операцию с базой данных, чтобы заявить о невозможности записи и отслеживания более подробной информации об ошибке, но не должны прерывать/мешать внешним транзакциям.

Утверждения должны использоваться только как функция отладки. Вы можете использовать их для проверки работоспособности, которые проверяют условия, которые всегда должны быть ИСТИНЫ, и которые указывают на некоторые ошибки программирования, если нет, или для проверки наличия определенных функций, таких как функции расширения или определенные системные ограничения и функции.

Утверждения не должны использоваться для обычных операций во время выполнения, таких как проверка входных параметров. Как правило, ваш код всегда должен работать правильно, если проверка подтверждения не активирована.

More details