|
|
|
| Добрый день. Имеется таблица, в которой ID имеет тип Varchar(36) следовательно туда ID заполняется функцией UUID(). Как после выполнения запроса на добавление строки получить этот самый ID? PDO::LastInsertID() не помогает, возвращает 0. | |
|
|
|
|
|
|
|
для: pavluxa09
(11.06.2011 в 12:56)
| |
<?
$query = mysql_query("INSERT INTO table VALUES (NULL, '123', 'qwerty')") or die (mysql_error());
print mysql_insert_id($query);
?>
|
эта функция показывает последний вставленный ID поля, у которого есть auto_increment | |
|
|
|
|
|
|
|
для: Ильдар
(11.06.2011 в 13:32)
| | У поля нет auto_increment, у него вместо NULL в запросе стоит функция UUID() и мне нужно получить то что она туда возвратила | |
|
|
|
|
|
|
|
для: pavluxa09
(11.06.2011 в 13:39)
| | а что это за функция? | |
|
|
|
|
|
|
|
для: pavluxa09
(11.06.2011 в 12:56)
| | Тут придется выполнять запрос, извлекающий последнюю запись, автоматически это значение вы вряд ли сможете получить. | |
|
|
|
|
|
|
|
для: cheops
(11.06.2011 в 13:40)
| | тут наверно и блокировку таблицы нужно включать? а то при удачном стечении обстоятельств "последний" айди может оказаться далеко не последним | |
|
|
|
|
|
|
|
для: Valick
(11.06.2011 в 14:31)
| | Лучше через переменную назначать UUID(), добавлять её в запрос, и извлекать значение UUID из сессии соединения. Значения там дикие - повторов быть не может по определению самой функции и алгоритма, поэтому вопрос только в том, чтобы взять это значение. | |
|
|
|
|
|
|
|
для: pavluxa09
(11.06.2011 в 12:56)
| | ради спортивного интереса...
как так случилось что id у Вас varchar?
т.е хочу узнать почему отказались от обычного нормального id с автоинкрементом в пользу
varchar и UUID()? в чем выгода?
и ради неспортивного интереса...
зачем Вам нужно получить этот последний id?
___
попробуйте вот так
mysql> UPDATE sequence SET id=LAST_INSERT_ID(UUID());
mysql> SELECT LAST_INSERT_ID();
точнее сначала UUID() - можно запихать в переменную и использовать при вставке ключа и в функцию. | |
|
|
|