Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di fu510n
    Registrato dal
    Sep 2005
    Messaggi
    137

    [MySQL] Come faccio a sapere quale sarà l'ID successivo?

    Ciao ragazzi. Non so se questa sia la sezione adatta per esporre il mio problema.
    Sto lavorando in Visual Basic .NET ma utilizzo un DB MySQL.
    Ho la necessità di selezionare il successivo ID che verrà generato per la chiave primaria con autoincrement.
    Se eseguo "SELECT LAST_INSERT_ID() FROM Tabella" e la tabella è vuota, mi viene restituito il valore NULL. Ma se nella tabella sono già stati inseriti dati e poi rimossi, il successivo ID non sarà 1 e in questo modo non lo saprò mai....

    Come posso risolvere?
    Fusion

    Currency Text Box (Updated: 16 Maggio 2008): http://digilander.libero.it/cmfusion/CurrencyTextBox.html

  2. #2
    Perchè ti serve di saperlo?
    Non è più facile inserire il nuovo record, ottenere il nuovo ID ed utilizzarlo nell'inserimento successivo (es. tabella di dettaglio)?

  3. #3
    premesso che un autoincrement avanza sempre e quindi se rimuovi dei record l'id mancante non verra' rioccupato in modo automatico, il modo piu' semplice per conoscere l'id successivo e' quello di leggerlo nello stato della tabella.

    show table status like 'nome_tabella'

    cerca il campo "Auto_increment" ... occhio alla maiuscola, il result set e' case sensitive.

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

  4. #4
    Utente di HTML.it L'avatar di fu510n
    Registrato dal
    Sep 2005
    Messaggi
    137
    Per FILIPPO.TOSO:

    In .Net utilizzo il MySQL.Data (MySQL Connector NET 5.2.2). Vengono eseguite tante modifiche a DB diciamo scollegato, poi vengono applicate le modifiche tutte insieme con un solo comando. Quindi a me serve modificare i dati prima di salvarli e per farlo devo prevedere con certezza assoluta quali saranno i successivi ID generati per la chiave primaria.


    Per PIERO.MAC:

    Grazie mille. Adesso come faccio a selezionare solo il valore Auto_increment?
    Fusion

    Currency Text Box (Updated: 16 Maggio 2008): http://digilander.libero.it/cmfusion/CurrencyTextBox.html

  5. #5
    Se per "modifiche" intendi "inserimenti", stai molto attento perchè basta un concorrenza per far crollare tutto il sistema (es. es un cliente che tenta di fare l'inserimento con un ID già utilizzato).

  6. #6
    Originariamente inviato da fu510n
    Grazie mille. Adesso come faccio a selezionare solo il valore Auto_increment?
    codice:
    $res = mysql_query("show table status like 'nome_tabella' ");
    
    $row = mysql_fetch_assoc($res);
    
    $next_id = $row['Auto_increment');

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

  7. #7
    Utente di HTML.it L'avatar di fu510n
    Registrato dal
    Sep 2005
    Messaggi
    137
    Per FILIPPO:

    Il software è MonoUtente. l'ID è generato automaticamente dall'autoincrement.




    Per PIERO:

    OK. Nel frattempo avevo già risolto così. Speravo di poter creare una Query Scalare e avere in output un valore invece di un datatable. Cmq non importa in .Net uso:

    CategorieTableAdapter.GetNextID()(0)("Auto_increme nt")

    e ottengo quello che mi serve.

    Grazie ancora.

    Buon Lavoro a tutti.
    Fusion

    Currency Text Box (Updated: 16 Maggio 2008): http://digilander.libero.it/cmfusion/CurrencyTextBox.html

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.