2016-06-10 2 views
0

на основе this question и этот абзац documentation:Как я могу понять, что моя таблица - транзакция или блокировка?

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

Я понял, если мой стол транзакционного тогда как запрос и спусковой будет зависят друг от друга. Я имею в виду, что либо запрос, и триггер будут успешными, либо ни один из них.

Итак, как я могу определить, что моя таблица является транзакцией или блокировкой? Отметил, что я использую MySQL, движок InnoDB и PDO (если это важно знать)

+0

Таблицы InnoDB являются транзакционными таблицами. Таблицами без транзакций будут, например, MyISAM. Замки связаны с транзакциями, но работают на обоих типах, поэтому я не совсем уверен, что вы подразумеваете под этим. – Solarflare

ответ

1

Вы можете узнать тип таблицы вы используете либо через SHOW CREATE TABLE для любого отдельного одного и искать ENGINE параметр или используйте SHOW TABLE STATUS и посмотрите на столбец Engine.

InnoDB поддерживает транзакции. MyISAM, устаревший MySQL-движок, нет.

Вы также должны проверить свои предположения о том, какие системы важны для вас. Просто потому, что вы используете какой-то конкретный движок локально, это не значит, что он был развернут, по умолчанию сервер может отличаться.

+0

Ah ok .... thx .. upvote –

+0

Итак, это [эта таблица] (http://i.stack.imgur.com/djw0B.png) транзакция? –

+0

Если это говорит InnoDB, да. Если он говорит MyISAM, вы должны, вероятно, переключить его на InnoDB. – tadman