Il numero autonumber di SQL Server riutilizzerà un valore se un record viene eliminato?

3

Il titolo lo afferma in pratica. Se ho una colonna bigint con chiave primaria e autonumber e un record è cancellato, SQL Server riuserà mai il valore ora disponibile?

Il problema di fondo è che ho un ambiente multiutente, e se richiamo un record dal database in memoria, allora un altro utente apporta delle modifiche (come l'eliminazione e / o la riaggiunta), se faccio aggiornamenti o eliminazioni sulla base di quell'ID in memoria, c'è la possibilità che io possa modificare un record che è stato aggiunto in background che non rappresenta veramente il record che dovrei modificare?

Mi rendo conto che potrei usare Guids, ma mi piacerebbe davvero sapere se BigInt / Autonumber è "sicuro" in questo scenario.

Grazie!

    
posta jwatts1980 25.07.2013 - 23:51
fonte

2 risposte

4

Non ci sono cose come AUTONUMBER in SQL Server, di cui sono a conoscenza. Quello che c'è, è la proprietà IDENTITY , che consente la creazione automatica di nuovi valori, come per le chiavi primarie. E IDENTITY è solo un generatore: parte da un valore iniziale e conta verso l'alto.

Ci sono alcuni usi avanzati per farlo loop, ma devi sapere cosa stai facendo per invocare quelli. Quindi no, se usi solo un IDENTITY 1, 1 normale su una colonna, ed è un BIGINT , a tutti gli effetti non verrà mai riutilizzato un valore. (Se sei in grado di esaurire la gamma di numeri a 64 bit, questo è un altro problema ...)

    
risposta data 26.07.2013 - 00:08
fonte
1

non sarebbe semplice provarlo? Per rispondere alla tua domanda, gli incrementi automatici utilizzano in genere generatori di sequenza per generare numeri. Una volta che un generatore di sequenze ti dà un numero, si muoverà e continuerà a dare nuovi numeri indipendentemente da ciò che accade alle tabelle esistenti. Quindi dovresti essere al sicuro.

    
risposta data 26.07.2013 - 00:07
fonte

Leggi altre domande sui tag