значение автоинкремента во вставленной в таблицу записи, kerdan, 14-Дек-06, 23:11 [смотреть все]сколько не рыл в книжках не мог найти следующей вещи: допустим типичный инсерт в таблицу, в которой есть конечно ключевое поле автоикремент. как вытащить его значение (чтобы тут же создать связанную с этой записью запись в другой таблице). Я делаю так: SELECT `id` FROM `table` WHERE ORDER BY `id` DESC LIMIT 1; Но если запрос выполняется на autocommit-сеансе, то там может появится другая запись (паралельным процессом (php-сценарием)). Подскажите, плиз, есть ли СТАНДАРТНОМ sql такая возможность. Ну если не таковом, то MySql иди Oracle. |
- значение автоинкремента во вставленной в таблицу записи, Андрей, 07:47 , 15-Дек-06 (1)
>сколько не рыл в книжках не мог найти следующей вещи: >допустим типичный инсерт в таблицу, в которой есть конечно ключевое поле автоикремент. > >как вытащить его значение (чтобы тут же создать связанную с этой записью >запись в другой таблице). >Я делаю так: SELECT `id` FROM `table` WHERE ORDER BY `id` DESC >LIMIT 1; >Но если запрос выполняется на autocommit-сеансе, то там может появится другая запись >(паралельным процессом (php-сценарием)). >Подскажите, плиз, есть ли СТАНДАРТНОМ sql такая возможность. >Ну если не таковом, то MySql иди Oracle. в пхп функция mysql_insert_id()
mysql_insert_id (PHP 3, PHP 4, PHP 5) mysql_insert_id -- Возвращает ID, сгенерированный при последнем INSERT-запросе. Описание int mysql_insert_id ( [resource link_identifier] ) mysql_insert_id() возвращает ID, сгенерированный колонкой с AUTO_INCREMENT последним запросом INSERT к серверу, на который ссылается переданный функции указатель link_identifier. Если параметр link_identifier не указан, используется последнее открытое соединение.
mysql_insert_id() возвращает 0, если последний запрос не работал с AUTO_INCREMENT полями. Если вам надо сохранить значение, убедитесь, что mysql_insert_id() вызывается сразу после запроса. Замечание: Значение в SQL функции MySQL LAST_INSERT_ID() всегда содержит последний сгенерированный ID и не обнуляется между запросами.
- значение автоинкремента во вставленной в таблицу записи, kerdan, 08:32 , 15-Дек-06 (2)
спасибо, че-то раньше я ее не приметил - странно, но спасибо большое. только это mysql, а нет ли стандартной возможности. так чтоб везде работало, т.е. не php-function, а sql'ная фигня какая-нибудь.
- значение автоинкремента во вставленной в таблицу записи, mirya, 22:11 , 15-Дек-06 (3)
>спасибо, че-то раньше я ее не приметил - странно, но спасибо большое. > >только это mysql, а нет ли стандартной возможности. >так чтоб везде работало, т.е. не php-function, а sql'ная фигня какая-нибудь. В стандарте есть такая вещь, как SEQUENCE, но т.к., напр., MySQL ее не поддерживает, не думаю, что это то, что нужно. ДЛя справки: в mysql можно сделать SELECT LAST_INSERT_ID() это будет эквивалент mysql_insert_id() А во многих универсальных интерфейсах доступа к БД соотв. универсальный АПИ для автогенерируемых ключей, напр для JDBC http://java.sun.com/javase/6/docs/api/java/sql/Connection.ht..., int)
- значение автоинкремента во вставленной в таблицу записи, kerdan, 22:24 , 15-Дек-06 (4)
угу..., хорошо.но это на самом деле не совсем то. мне как минимум надо знать три метода (наиболее правильных): для ODBC - делаю селектом; для MySql - собственно, уже подсказали - спасибо; для Oracle8 - не знаю :(
|