Newsgroup: it.comp.software.database
Titolo: colonna IDENTITY di tabella MS SQL SERVER

Si può fare in modo che riparta da 1 ad ogni cambio di valore di un'altra 
colonna?
 
Ho un database FATTURE con due tabelle relazionate  one-to-many , TESTE e 
RIGHE .
 
tabella TESTE:  ID_TESTA,CLIENTE ...etc  ( la colonna ID_TESTA è PK  e 
identity )
 
tabella RIGHE: ID_TESTA,ID_RIGA,ARTICOLO,PREZZO,etc... ( le colonne ID_TESTA 
e ID_RIGA formano la PK composta,e la colonna ID_RIGA è identity.
Tale colonna dovrebbe resettarsi ad ogni cambio di ID_TESTA.
 
Adesso è così :
 
1  1  articolo     100 euro
1   2  pezzo       30 euro
2   3   chiodi      40 euro
2   4   viti           50 euro
2   5   legni        47 euro
3   6   ferri         38 euro
3   7    gru           6 euro
 
 
Vorrei che fosse :
 
1  1  articolo     100 euro
1   2  pezzo       30 euro
2   1   chiodi      40 euro
2   2   viti           50 euro
2   3   legni        47 euro
3   1   ferri         38 euro
3   2    gru           6 euro
 
Nelle istruzioni   TSQL  INSERT che alimentano le tabelle,non indico le 
colonne identity,sono cioè assegnata in automatico dal database.
 
Ciao
 
 
 

 3   2    gru           6 euro
 
Temo proprio di no. Il campo IDENTITY garantisce di
essere univoco sull'intera tabella, non puoi priprio mettere
due valori uguali. Per fare quello che ti serve io scriverei
un trigger "after insert" che  ti assegna i progressivi di
riga assegnando max+1 (o qualcosa del genere).
 
ciao
Giacomo


Questi problemi non si risolvono aggirando il funzionamento di una 
sequenza ( che ha un suo preciso scopo) ma con una apposita query
 
 

 
 
a che pro?
se spieghi il problema e' piu' facile trovare la soluzione.
 
la soluzione che stai descrivendo e che vorresti implementare sembra un 
tentativo di numerare le righe della fattura in maniera sequenziale.
non farlo; andrai incontro a casini e normalmente non ti serve...
 
 
[cut]
 
 
 
-- 
Paolo opg
 
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

 non farlo; andrai incontro a casini e normalmente non ti serve...
 
ho poi risulto con una VIEW,in cui ho usato una query con la funzione 
Rownumber() ( PARTITION  over la colonna Identity)
 
ciao 
 
 


Che è la soluzione come avevo scritto
 

"vittorio" <a...@aworrrnder.pp> wrote in news:52e6ea8d$0$23114
$
4faf...@reader2.news.tin.it
:

non hai detto quale era il problema da risolvere...
 
in questo modo hai una colonna in piu' contenente valori che possono 
cambiare a ogni apertura della view in un modo che non puoi controllare.
 
a cosa serve una colonna contenente valori che cambiano in maniera 
imprevedibile?


 non hai detto quale era il problema da risolvere...
 
Avevo visto un database in foxpro in cui erano presenti due tabelle in 
relazione  master-detail ( testa-righe di fatture),e nella tabella righe le 
righe della fattura erano numerate così:
 
 
id_testa    id_riga     articolo      prezzo
1             1            articolo           100 euro
1             2             pezzo             30 euro
2             1             chiodi            40 euro
2             2             viti                 50 euro
2             3             legni               47 euro
3             1            ferri                38 euro
3             2             gru                  6 euro
 
Volevo ottenere la stessa cosa in un database  di MS Sql già esistente,ma la 
cui colonna ID_RIGA  è di tipo "identity" ,per cui il suo valore non riparte 
da 1 ad ogni cambio di valore della colonna ID_TESTA,ma cresce 
continuamente(del resto non ammette valori duplicati una colonna identity 
quindi è impossibile che riparta da 1 ad  ogni nuova fattura).
 
 
 
 
 
 


 
Ad una numerazione di sequenzialità che ritorna ad 1 al cambio di 
qualche altro valore
Che non sia sempre uguale ad ogni applicazione della vista non è per 
forza un  errore
Dipende dall' applicazione
 
 
 
 
 
 

"vittorio" <a...@aworrrnder.pp> wrote in
news:52e78fe5$0$23123$
4faf...@reader2.news.tin.it
: 

nel db foxpro ci sono buchi nella numerazione delle righe?
 
se la risposta e' si' vuol dire che in caso di cancellazione l'id_riga non 
e' riutilizzato e allora la vista con il rownumber non e' la soluzione 
giusta.


 
 
esatto, applicazione che non sappiamo quale sia.
se e' un report interno di controllo allora chissene; se serve da dare
alla contabilita' o per i clienti allora il discorso cambia... 
