Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: PDO: Как получить LastInsertId если поле ID заполянется функцией UUID()?
 
 автор: pavluxa09   (11.06.2011 в 12:56)   письмо автору
 
 

Добрый день. Имеется таблица, в которой ID имеет тип Varchar(36) следовательно туда ID заполняется функцией UUID(). Как после выполнения запроса на добавление строки получить этот самый ID? PDO::LastInsertID() не помогает, возвращает 0.

  Ответить  
 
 автор: Ильдар   (11.06.2011 в 13:32)   письмо автору
 
   для: 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

  Ответить  
 
 автор: pavluxa09   (11.06.2011 в 13:39)   письмо автору
 
   для: Ильдар   (11.06.2011 в 13:32)
 

У поля нет auto_increment, у него вместо NULL в запросе стоит функция UUID() и мне нужно получить то что она туда возвратила

  Ответить  
 
 автор: Ильдар   (11.06.2011 в 13:41)   письмо автору
 
   для: pavluxa09   (11.06.2011 в 13:39)
 

а что это за функция?

  Ответить  
 
 автор: cheops   (11.06.2011 в 13:40)   письмо автору
 
   для: pavluxa09   (11.06.2011 в 12:56)
 

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

  Ответить  
 
 автор: Valick   (11.06.2011 в 14:31)   письмо автору
 
   для: cheops   (11.06.2011 в 13:40)
 

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

  Ответить  
 
 автор: cheops   (11.06.2011 в 15:32)   письмо автору
 
   для: Valick   (11.06.2011 в 14:31)
 

Лучше через переменную назначать UUID(), добавлять её в запрос, и извлекать значение UUID из сессии соединения. Значения там дикие - повторов быть не может по определению самой функции и алгоритма, поэтому вопрос только в том, чтобы взять это значение.

  Ответить  
 
 автор: Valick   (11.06.2011 в 14:19)   письмо автору
 
   для: 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() - можно запихать в переменную и использовать при вставке ключа и в функцию.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования