Valore massimo di un contatore

lunedì 08 ottobre 2007 - 13.32

ely.bise Profilo | Newbie

Ciao a tutti!
Ho creato un database in sql server express edition per una applicazione asp.net 2.0.
Per le chiavi primarie delle tabelle ho usato i classici contatori, solo che ora mi si presenta un problema: dovrei sapere prima che venga fatta l'insert il progressivo che andrà a mettere. Solo che facendo il max +1 mi restituisce il valore sbagliato perchè potrebbero esserci state delle cancellazioni e quindi la max non coinciderebbe con il contatore della tabella.
Ho letto in giro del comando DBCC CHECKIDENT, ma non riesco a farlo funzionare:

USE gestcocha; GO DBCC CHECKIDENT('news', NORESEED); GO

cosa posso aver sbagliato? questo comando funziona anche nella versione express?
eventualmente ci sono altre soluzioni?

grazie mille

lbenaglia Profilo | Guru

>Per le chiavi primarie delle tabelle ho usato i classici contatori,
>solo che ora mi si presenta un problema: dovrei sapere prima
>che venga fatta l'insert il progressivo che andrà a mettere.

Ciao ely,

per definizione il valore IDENTITY viene autogenerato a fronte di un comando di INSERT quindi non è possibile conoscere in anticipo il suo valore.
Per quale motivo ti interessa saperlo?

>grazie mille
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

ely.bise Profilo | Newbie

Il problema è che le news posso avere un'immagine che memorizzo salvandola con nome uguale alla chiave primaria per evitare che non sia univoco, solo che devo quindi sapere il progressivo che andrà a mettere.
Eventualmente se non ci sono soluzioni posso mettere la chiave univoca non come contatore, ma se per caso c'erano alternative era meglio!
grazie mille

lbenaglia Profilo | Guru

>Il problema è che le news posso avere un'immagine che memorizzo
>salvandola con nome uguale alla chiave primaria per evitare che
>non sia univoco, solo che devo quindi sapere il progressivo che
>andrà a mettere.
Non puoi utilizzare un GUID che puoi generare richiamando la funzione NEWID() ?

SELECT NEWID() AS NomeFile /* Output: NomeFile ------------------------------------ F604A96F-82F3-4B85-ACEB-9D0BFA0CA871 (1 row(s) affected) */

>grazie mille
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

ely.bise Profilo | Newbie

Grazie mille, sapevo dell'esistenza di questa funzione, mi sembra un'ottima alternativa!
grazie!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5