|
|
|
| Здравствуйте!
прочитал несколько топиков на этом форуме про транзакции, но для себя ответа не нашёл
тему разместил в форуме php, так как интересует именно синтаксис php
mysql_query ("LOCK TABLES ...");
$result = mysql_query ("SELECT ..");
if (mysql_num_rows($result)!=1) функция завершается..
mysql_query("START TRANSACTION");
mysql_query ("INSERT INTO `..");
if (mysql_affected_rows()!=1) функция завершается (ROLLBACK)
$id = mysql_insert_id();
.... и потом несколько раз
mysql_query ("UPDATE ...");
if (mysql_affected_rows()!=1) функция завершается (ROLLBACK)
...
ну и в конце
mysql_query("COMMIT");
mysql_query ("UNLOCK TABLES");
вопросы:
- нужно ли в данном случае использовать mysql_query ("LOCK TABLES ...");
- правильно ли использовать if (mysql_affected_rows()!=1), я видел конструкции где используется if(!mysql_query($query);
но ведь if(!mysql_query($query); возвращает правду если запрос правильный а не если он прошел успешно?
- как узнать что запросы mysql_query ("LOCK TABLES ..."); и mysql_query("START TRANSACTION"); прошли успешно? | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(21.01.2010 в 10:23)
| | mysql_query возвращает значение, отличное от false, если запрос выполнен.
LOCK TABLES - инструмент не из оперы транзакций. Он как раз применяется обычно в тех случаях, когда транзакции не поддержаны. Например на таблицах MyISAM.
ROLLBACK тоже нужно вызывать через mysql_query()
тема явно из соседнего раздела. | |
|
|
|