Trovare ultimo record inserito

di il
7 risposte

Trovare ultimo record inserito

Ciao a tutti,

Ho un applicativo che scrive in varie tabelle che purtroppo non hanno né primary key né un id.
C'è un modo per trovare l'ultimo record inserito?
Grazie.

Pietro

7 Risposte

  • Re: Trovare ultimo record inserito

    Veramente bizzarro ... tabelle senza Id né Pk ... che campi ci sono ? Date? Contatori? Altro?

    Altrimenti la vedo dura ...
  • Re: Trovare ultimo record inserito

    Grazie per la risposta
    Niente contatori e niente date... è per questo che non so più dove sbattere la testa. Speravo che in Sql Server ci fosse un modo per trovare l'ultima riga inserita, ma anche cercando su internet non ho trovato nulla a parte le funzioni IDENT_CURRENT, @@identity e SCOPE_IDENTITY() che però non riesco ad usare. Di seguito un estratto della tabella

    Code Name U_ID_Vano U_Tipo U_Limite
    000000nz 000000nz 0000005u Picking 0.000000
    000000o1 000000o1 00000023 Picking 0.000000
    000000o2 000000o2 0000003c Picking 0.000000
    000000o3 000000o3 000002nt Picking 0.000000
    000000o4 000000o4 000004lp Picking 0.000000
    000000o5 000000o5 000002ra Picking 0.000000
    000000o6 000000o6 0000000a Picking 0.000000
    000000o7 000000o7 0000003m Picking 0.000000

    In un'altra tabella, che è in relazione con questa, il campo code è PK. Ma anche qui mi riesce difficile capire come estrarre l'ultimo record inserito.
  • Re: Trovare ultimo record inserito

    Puoi o non puoi modificare la struttura delle tabelle?
  • Re: Trovare ultimo record inserito

    No purtroppo non posso...
  • Re: Trovare ultimo record inserito

    Neanche creare un "trigger after insert" ?
  • Re: Trovare ultimo record inserito

    Nella TEORIA RELAZIONALE DEI DATI, su cui si basano i DATABASE RELAZIONALI, una TABELLA e' una RELAZIONE, e le RELAZIONI sono INSIEMI DI TUPLE (e la tupla corrisponde al RECORD: i termini sono diversi perche' ci sono subdole differenze concettuali che non vale la pena approfondire in questo momento).

    Un insieme NON HA ORDINE!!!!

    Per poter assicurare un ORDINE, SI DEVE aggiungere una colonna DEDICATA, che sia un ID, un timestamp, o qualunque altra cosa, OPPURE il record stesso contiene dei dati che permettono di forzare un ordine.

    Se la tabella e' in SOLO INSERIMENTO, POTREBBE ESSERE che, se scrivi

    SELECT * FROM <tabella>

    l'ULTIMO record della SELECT e' anche l'ULTIMO inserito: MA NESSUNO TI PUO' ASSICURARE questo fatto!!!!!
    Inoltre di devi scandire l'INTERA select per trovare l'ultimo record.


    DOMANDONA: ma sei sicuro che le colonne CODE e NAME non contengono un ID che si incrementa di volta in volta? A vederne il contenuto sembra proprio di si!

    Se cosi' fosse, allora la soluzione e' BANALE:

    SELECT TOP 1 * FROM <tabella> ORDER BY 'code' DESC;
  • Re: Trovare ultimo record inserito

    Sicuramente la tabella CODE contiene un id ma si incrementa secondo regole che non conosco e che stanno all'interno del codice dell'applicativo che popola la tabella.
    Quindi SELECT TOP 1 * FROM <tabella> ORDER BY 'code' DESC non può funzionare.
    Conosco la TEORIA RELAZIONALE DEI DATI ecc... La mia domanda era per capire se esiste una funzione di SQL SERVER che riesce a rilevare l'ultima riga inserita in una tabella.
    Ma a quanto pare non c'è. Credo che mi arrangerò diversamente.
    Grazie a tutti per le risposte
Devi accedere o registrarti per scrivere nel forum
7 risposte