Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 1.0/1.1
SCOPE_IDENTYTY
giovedì 21 luglio 2005 - 12.17
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
PEPE
Profilo
| Senior Member
296
messaggi | Data Invio:
gio 21 lug 2005 - 12:17
Salve,
ho un db sqlserver 2000 con una tabella che ha id, nome, cognome.
L'id e' int con identità si e incremento 1, in pratica un contatore.
Quello che devo fare e' iunserire un nome in questa tabella ed utilizzare l'id creato per effettuare altri aggiornamenti su altre tabelle. Queste sono solo prove che faccio per studio :D.
ho un oggetto datarow che contiene il nome ed il cognome dell'utente e voglio inserirlo nella tabella. quello che dovrei fare e' fare l'inserimento e poi fare una select dell'ultimo elemento inserito tutto all'interno della stassa transazione in modo da evitare possibili errori. Ho letto pero che se io faccio una insert del tipo INSERT INTO tblUsers (nome, cognome) VALUES (@NOME, @COGNOME) SELECT SCOPE_IDENTITY() AS id posso in un'unico batch riuscire a recuperare il nuovo id con una proprietà updatedrowsource dell'oggetto comando o l'evento rowupdated del dataadapter, senza dover fare di nuovo la select. Ora però non ho trovato esempi che spiegano come scrivere il codice per fare questa cosa. Io ho provato a fare un po di tentativi utilizzando un dataadapter ma.......passo :D.
Volevo chiedervi se cortesemente avete un esempio abbastanza semplice che fa capire come fare un operazione di inserimento di questo tipo e recuperare quindi l'id creato.
Vi ringrazio per la vostra disponibilità,
Luca.
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
gio 21 lug 2005 - 12:41
Se l'insert into lo fa il dataadapter si preoccupa da solo di recuperare l'ultimo id inserito.
Mentre se il comando lo scrivi tu ti consiglio di fare una piccola stored procedure.
CREATE PROCEDURE myStored
@Description char(16),
@Identity int OUT
AS
INSERT INTO MyTabe (Description)
VALUES(@Description)
SET @Identity = @@Identity
RETURN @@ROWCOUNT
PEPE
Profilo
| Senior Member
296
messaggi | Data Invio:
gio 21 lug 2005 - 15:24
Ciao,
scusami se non sono molto pratico ma nella store procedure che hai fatto che differenza c'e' tra la @ e la @@??
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
gio 21 lug 2005 - 15:30
La @ singola identifica le variabili
@@identity invece è la variabile che restituisce il numero.
La puoi sostituire (a volte è indicato) con SCOPE_IDENTITY()
micto27
Profilo
| Senior Member
385
messaggi | Data Invio:
sab 23 lug 2005 - 18:04
se non vuoi usare una stored procedure puoi comunque utilizzare un'istanza di SqlCommand valorizzando la proprietà CommandText con la concatenazione di 2 statement (separati da ";"):
CommandText = "Insert into table(a, b, c) values(v1, v2, v3);select @@identity
a questo punto:
dim newId as Int32 = mioCommand.ExecuteScalar
nella variabile newId avrai a disposizione il valore dell'ID assegnato alla riga inserita.
Ciao, Michele.
PEPE
Profilo
| Senior Member
296
messaggi | Data Invio:
sab 23 lug 2005 - 19:45
ottimo!!! appena sto al lavoro lo provo :D.
Ciao e grazie.
Torna su
Stanze Forum
Elenco Threads
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 !