Sql server & visual studio 2003

lunedì 12 settembre 2005 - 14.56

totti240282 Profilo | Guru

ciao vorre isapere uan cosa.se creo due tabelle una diciamo con

id campo campo e l'altra

id campo campo

e creo una relazione tra i due id ,se io inserisco un campo nella prima tabella ,l'id viene inserito anche nella seconda tabella ???

lbenaglia Profilo | Guru

>e creo una relazione tra i due id ,se io inserisco un campo nella
>prima tabella ,l'id viene inserito anche nella seconda tabella
> ???

Come fa SQL Server a sapere la logica di valorizzazione dell'altra tabella?
Supponiamo di avere una relazione 1 a molti tra le due tabelle.
Anche definendo un trigger di INSERT sulla tabella dalla parte 1 della relazione, il trigger sarà completamente all'oscuro sulla riga (o sulle righe) da inserire nella tabella molti.

Secondo me la domanda posta in questi termini è priva di senso.
E' compito dell'applicazione client popolare oppurtunamente le due tabelle.
Il COSTRAINT FOREIGN KEY fa solo in modo di garantire che il valore della foreign key della tabella molti appartenga alla primary key della tabella 1.

Ciao!


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

totti240282 Profilo | Guru

scusami mi sono accorto solo adesso che sono 28mb....

C'è solo un capitano !!!!!!

totti240282 Profilo | Guru

scusate ho sbagliato risposta.

Alla fine ho risolto cosi inserisco una riga nella prima tabella ,leggo l'id e poi lo schiaffo anche nella seconda tabella.

C'è solo un capitano !!!!!!

lbenaglia Profilo | Guru

>Alla fine ho risolto cosi inserisco una riga nella prima tabella
> ,leggo l'id e poi lo schiaffo anche nella seconda tabella.

Che DBMS usi?
Come fai a recuperare l'ID?

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

totti240282 Profilo | Guru

select id from nometabella where id=@@identity

uso sql server 2000

C'è solo un capitano !!!!!!

lbenaglia Profilo | Guru

>select id from nometabella where id=@@identity
>
>uso sql server 2000

Bene, allora ti sconsiglio di utilizzare quel metodo se non vuoi rischiare di recuperare un id sbagliato.
Se il comando di INSERT della tua sp agisce su una tabella con un trigger di INSERT che va ad aggiornare una seconda tabella con una colonna IDENTITY, la funzione @@IDENTITY ti restituirà il valore generato da quest'ultima tabella invece che quello determinato dalla tua operazione di inserimento.

Per ovviare a questo problema, SQL Server 2000 implementa la funzione SCOPE_IDENTITY() il cui scope è quello locale alla tua procedura/batch e quindi ti restituisce effettivamente il valore generato dalla tua operazione di INSERT.

Per maggiori informazioni leggi i seguenti paragrafi sui Books Online:

"@@IDENTITY"
http://msdn.microsoft.com/library/en-us/tsqlref/ts_globals_50u1.asp

"SCOPE_IDENTITY"
http://msdn.microsoft.com/library/en-us/tsqlref/ts_sa-ses_6n8p.asp

Per un esempio concreto simile al tuo leggi il seguente post:
http://groups.google.it/group/microsoft.public.it.sql/msg/5c85b3dcd6d71e6d

Infine questa è una interessante discussione sull'argomento:
http://groups.google.it/group/microsoft.public.it.sql/browse_frm/thread/869bb3a602007820/66e7e76caaab1948#66e7e76caaab1948

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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