WordPress как на ладони

Как использовать mysql транзакции в WordPress?

Чтобы понять зачем могут пригодится транзакции, допустим нам нужно удалить 10 строк таблицы и если хоть с одним из запросов удаления что-то пойдет не так, нужно ничего не делать, не удалять то что уже было удалено.

В этом нет ничего сверхобычного, нужно просто о выполнить запрос START TRANSACTION, затем нужные нам запросы и в конце запрос COMMIT или ROLLBACK (в зависимости от результата):

В wordpress, используя wpdb это можно записать так:

$wpdb->query( 'START TRANSACTION' );
$result1 = $wpdb->delete( $table, $where );
$resul2 = $wpdb->delete( $table, $where );
if ( $result1 && $result2 ) {
	$wpdb->query( 'COMMIT' ); // все прошло ок, комитим транзакцию
}
else {
	$wpdb->query( 'ROLLBACK' ); // что-то пошло не так, откатываемся - ничего не делаем
}

Имейте ввиду, что движок MySQL MyISAM, не поддерживает транзакции. Поэтому для использования транзакций, убедитесь, что все ваши таблицы используют InnoDB.

Зачем нужны mysql транзакции

Транзакции в MySQL необходимы для поддержки целостности данных и обеспечения контроля за их изменениями. Вот некоторые основные причины, по которым они важны:

  1. Атомарность: Транзации обеспечивают атомарность операций, то есть либо все операции в транзакции успешно выполняются, либо ни одна не выполняется.

  2. Согласованность: После каждой транзакции база данных остается в согласованном состоянии.

  3. Откат: Если в процессе транзакции происходят какие-либо ошибки, то все изменения, произошедшие в рамках этой транзакции, откатываются, что предотвращает возможное повреждение данных.

  4. Параллелизм: Транзакции также помогают избегать конфликтов при параллельном доступе к данным.

  5. Безопасность: Транзакции предоставляют механизм защиты от потери или повреждения данных в результате сбоев системы или ошибок.

  6. Изоляция: Каждая транзакция выполняется изолированно от других транзакций, что обеспечивает безопасность данных.

Эта заметка встроена в: 20+ полезных SQL запросов для WordPress
1 комментарий
    Войти