Domanda

In mysql, come posso ottenere la chiave primaria utilizzata per un'operazione di inserimento, quando è autoincrementante.

Fondamentalmente, voglio che il nuovo valore autoincrementato venga restituito al termine dell'istruzione.

Grazie!

È stato utile?

Soluzione

Il tuo commento di chiarimento afferma che sei interessato a assicurarti che LAST_INSERT_ID () non dia il risultato sbagliato se si verifica un altro INSERT simultaneo. Ti assicuriamo che è sicuro utilizzare LAST_INSERT_ID () indipendentemente da altre attività simultanee. LAST_INSERT_ID () restituisce solo l'ID più recente generato durante la sessione corrente.

Puoi provarlo tu stesso:

  1. Apri due finestre shell, esegui mysql client in ciascuno e connettersi a banca dati.
  2. Shell 1: INSERISCI in una tabella con un Tasto AUTO_INCREMENT.
  3. Shell 1: SELECT LAST_INSERT_ID (), vedi risultato.
  4. Shell 2: INSERISCI nella stessa tabella.
  5. Shell 2: SELECT LAST_INSERT_ID (), vedere un risultato diverso dalla shell 1.
  6. Shell 1: SELECT LAST_INSERT_ID () di nuovo, vedi una ripetizione di prima risultato.

Se ci pensi, questo è l'unico modo che abbia senso. Tutti i database che supportano meccanismi chiave a incremento automatico devono agire in questo modo. Se il risultato dipende da una condizione di competizione con altri client eventualmente INSERTI contemporaneamente, non ci sarebbe modo affidabile per ottenere l'ultimo valore ID inserito nella sessione corrente.

Altri suggerimenti

[seleziona max (primary_key_column_name) da table_name] Ahhh non intenzionalmente. Non sono un ragazzo di MySQL ma ci sono modi specifici per ottenere l'ultimo ID inserito per l'ultima azione completata che sono un po 'più robusti di questo. Cosa succede se si verifica un inserimento tra la scrittura sulla tabella e l'interrogazione? Lo so perché mi ha colpito molte lune fa (quindi sì, succede). Se tutto il resto fallisce, leggi il manuale: http: // dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top