Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110

    [php] - come recuperare l'id in un insert evitanto sovrapposizione?

    Ciao a tutti,
    come si recupera l'id durante un insert, senza problemi di sovrapposizione?

    So che esiste LAST_INSERT_ID() ma se l' utente A_lento inizia la chiamata alla funzione e l'utente B_speedy esegue la chiamata piu' velocemente di A_lento, si crea un problema di sovrapposizione e l'utente A_lento si ritrova a recuperare l'id, non piu' suo, ma di B_speedy.

    C'e' un modo perche' questo non accada?

    Grazie.

    e

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110
    ok ho trovato qualcosa come "scope_identity()"...spero risolva.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110
    non e' che ha poi funzionato un gran che...o per lo meno...non ci sono riuscito.
    Qualche aiuto?... qualcuno sa se esiste una funzione ad hoc?

  4. #4
    Prova con la funzione mysql_insert_id().

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110
    Originariamente inviato da alcio74
    Prova con la funzione mysql_insert_id().

    Grazie per la risposta, ma temo che tale funzione dia il problema che accennavo all'inizio di sovrapposizione.

    Ovvero utente1 accede al form e richiedo l'id, se nel frattempo l'utente 2 accede al form ed e' piu' veloce con mysql_insert_id, il sistema recupera l'id dell'utente 1, e l'utente 2 quindi ha un id sbagliato.

    SCOPE_IDENTITY() sembra risolvere la cosa, ma non ho trovato un gran che in rete per php...strano.

  6. #6
    Originariamente inviato da earp_
    Ovvero utente1 accede al form e richiedo l'id, se nel frattempo l'utente 2 accede al form ed e' piu' veloce con mysql_insert_id, il sistema recupera l'id dell'utente 1, e l'utente 2 quindi ha un id sbagliato.
    non esiste l'utente piu' veloce del west, anche perche' gli utenti eseguono lo stesso script (si presume).

    Esiste che si deve richiedere l'id inserito immediatamente dopo la query insert. Poi, perche' mysql_insert_id prende in considerazione solo l'id inserito dalla query espressa dalla sua stessa connessione. Ergo, utilizza mysql_insert_id.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110
    Avevo letto qualche articolo vedi

    It is possible that the use of @@IDENTITY will not return the expected value when there is a trigger present. The use of SCOPE_IDENTITY() is preferred in this case.
    e anche
    Whenever you insert a record and it has auto-increment column (Identity Column in ms-sql parlance) you can user this to retrieve the id for the row you inserted:

    @id = SCOPE_IDENTITY()

    this ensures that you get the identity column value that your insert produced, not by the other users during the time your code was running (between insert and getting identity by *scope_identity()*)
    Per cui ho pensato che facesse al caso mio.

    Cio' che dici ha comunque senso e il manuale mi ha convinto.
    Grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.