PHP mysql_insert_id
과 동일한 것이 있습니까? 마지막으로 삽입 한 UUID() 기본 키를 가져 오시겠습니까? (나는 항상 0을 얻습니다.) auto_inc 정수에서는 작동합니다.MySQL의 UUID() 기본 키를위한 PHP mysql_insert_id()?
답변
아니요, last_insert_id()는 마지막으로 생성 된 auto_increment 필드 만 검색합니다. select uuid()
을 먼저 수행 한 다음 해당 uuid를 사용하여 삽입을 수행해야합니다.
그러나 uuids가 고유하다고 보장 할 수는 없으므로 단순히 충돌 할 가능성이 거의 없습니다. 고유성이 필요하다면 auto_increment를 사용하십시오. 단일 테이블 내에서 결코 재사용되지 않습니다.
set @id=UUID();
insert into <table>(<col1>,<col2>) values (@id,'another value');
select @id;
다른 서버에 파쇄 할 때 auto_increment가 실패했다고 생각했기 때문에 UUID가 사용됩니까? – ina
@ina 예, 샤딩 (다른 서버와 관계없이)은 파티션을 전환하면 auto_increment 오류가 발생할 수 있습니다. 그러나 테이블을 분할 ("분할") 할 때 PK는 실제로 파티션을 추가하는 열과 함께 auto_increment 값이됩니다. –
나는 여전히 많은 시스템이 사용자의 기본 ID에 대해 UUID를 사용하는 이유를 이해하려고합니다. 데이터베이스가 다른 서버에서 확장 될 것으로 가정하고 UUID의 MAC 주소가 데이터가있는 서버를 결정하는 데 도움이되었다고 생각했습니다. 그러나 ID가 고유하고 확장 할 수 있다고 보장되는 경우 UUID를 사용하는 이유는 무엇입니까? – ina
불행히도 내가 있다고 생각하지 않습니다 –
잘, 레거시 PHP 설치에 대한 중단 지원 ... PDO에는 이것에 대한 무언가가 있습니까? – ina
"유산"은 어떻게 말하는거야? [Mysqli] (http://us.php.net/manual/en/book.mysqli.php)는 꽤 잘 지원됩니다. –