PHP MYSQL: мгновенный выбор + вставка - PullRequest
0 голосов
/ 31 января 2012

Мне нужно извлечь из MYSQL значение, затем изменить его и вставить в mysql.

например:

$str = mysql_fetch_assoc(mysql_query('SELECT `str_id` FROM `ids` ORDER BY `num_id` DESC LIMIT 1 ')); // = aaa
$str = $str++; // aaa -> aab
// than check if "aab" key already exist
// if not , insert as key as "aab"

что касается этого алгоритма, существует риск того, что этот скрипт запускается с двух сторон земного шара, и два уникальных ключа будут подписаны как "aab" ..

как я могу сделать это без риска дважды подписать этот уникальный ключ?

Ответы [ 2 ]

1 голос
/ 31 января 2012

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

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

1 = a
2 = b
...
27 = aa
28 = ab

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

0 голосов
/ 31 января 2012

При использовании MySQL-InnoDB вы должны использовать транзакции (предоставленные MySQLi и PDO) по этой причине. MyISAM не поддерживает его.

Вот руководство по транзакциям в PDO: http://php.net/manual/en/pdo.transactions.php

...