Existe-t-il un équivalent à PHP mysql_insert_id
pour récupérer la dernière clé primaire UUID() insérée? (Je reçois toujours 0. Cela fonctionne pour les entiers auto_inc cependant)PHP mysql_insert_id() pour les clés primaires MySQL UUID()?
Répondre
Non, last_insert_id() récupère uniquement les derniers champs auto_increment générés. Vous devrez d'abord faire un select uuid()
, puis faire un insert en utilisant cet uuid. Cependant, notez que les uuids ne peuvent pas être garantis uniques - ils sont tout simplement très peu susceptibles d'entrer en collision. Si vous avez besoin d'unicité, alors allez avec un auto_increment - ils ne seront jamais réutilisés dans une seule table.
Je pensais que l'auto_increment échouait lorsque vous partagiez avec différents serveurs, d'où l'utilisation des UUID? – ina
@ina oui, sharding (que ce soit ou non à des serveurs différents) peut provoquer l'échec de l'auto_increment, si vous changez de partition. Mais, lorsque vous partitionnez ("shard") une table, votre PK devient effectivement la valeur auto_increment plus la colonne sur laquelle vous partitionnez. –
J'essaie toujours de comprendre pourquoi de nombreux systèmes utilisent l'UUID pour l'identifiant principal d'un utilisateur. Je pensais que c'était parce qu'ils supposaient que la base de données évoluerait sur différents serveurs, et l'adresse mac dans l'UUID aide à déterminer sur quel serveur les données sont. Mais, si un identifiant est garanti unique et peut évoluer, pourquoi utiliser les UUID. – ina
Je trouve cette solution assez courte et simple:
set @id=UUID();
insert into <table>(<col1>,<col2>) values (@id,'another value');
select @id;
- 1. Clés primaires entières non indispensables pour MySQL
- 2. comment peut affecter les performances lorsque j'utilise les UUID comme mes clés primaires dans MySQL
- 3. Dois-je utiliser int ou char pour id/uuid (clés primaires) dans MySQL?
- 4. Touches primaires UUID et Memcached
- 5. REPLACE mysql requête avec plusieurs clés primaires
- 6. MySQL: Modification des ID des clés primaires
- 7. Entité séparée pour les clés primaires
- 8. requête SQLite pour trouver les clés primaires
- 9. Meilleures pratiques pour les clés primaires
- 10. clés primaires et les clés étrangères conflit
- 11. Question mysql facile concernant les clés primaires et un insert
- 12. Php, MySql - Connexions DB multiples et mysql_insert_id()
- 13. Clés et contraintes primaires
- 14. Comment supprimer des clés primaires redondantes d'une table MYSqL?
- 15. Clés primaires AppEngine
- 16. Pratique des clés primaires
- 17. Suppression de toutes les clés primaires
- 18. Entity Framework OnChanging protège les clés primaires
- 19. sqlite - détermine par programme les clés primaires
- 20. Routes et clés primaires dans les rails
- 21. subsonic 3.0.0.3 pour plusieurs clés primaires table
- 22. Question SQL générale sur les clés primaires
- 23. MySQL UUID duplication BUG
- 24. MySQL n'affiche pas les clés étrangères qui sont également des clés primaires
- 25. Schéma d'information et clés primaires
- 26. Clés primaires composites SQL Server
- 27. Héritage EF et clés primaires
- 28. Hibernate noop id clés primaires
- 29. Insertion de clés étrangères et de clés primaires mysql dans une transaction.
- 30. MySQL: Modification de l'ordre des clés primaires auto-incrémentées?
Je ne pense pas que, malheureusement, il y a. De même, cessez d'utiliser les fonctions mysql_ * et utilisez plutôt les fonctions mysqli_ * ou les objets PDO. –
bien, autre que le support de rupture pour les installations php héritées ... y at-il quelque chose dans PDO pour cela? – ina
comment «héritage» parlons-nous? [Mysqli] (http://us.php.net/manual/fr/book.mysqli.php) est assez bien supporté. –