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
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Messaggio di errore...
lunedì 20 ottobre 2008 - 11.51
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
bolla111
Profilo
| Senior Member
293
messaggi | Data Invio:
lun 20 ott 2008 - 11:51
sto facendo un progetto in visual veb developer.
ho bisogno di fare un update di una tabella ma mi viene visualizzato questo errore:
Violazione del vincolo PRIMARY KEY Impossibile inserire la chiave duplicata nell'oggetto.
TAID,TAIDIN e DAID formano la chiave primaria della tabella; TAID e TAIDIN sono anche chiave esterna di una tabella le quali chiavi primarie sono proprio TAID e TAIDIN.
queste sono le query che ho provato a fare ma il risultato è sempre lo stesso:
"UPDATE DTLASSTASK SET DAID=@nDAID, DAQTA=@nDAQTA FROM DTLASSTASK WHERE TAID=@nTAID AND TAIDIN=@nTAIDIN"
"UPDATE DTLASSTASK SET DAID=@nDAID, DAQTA=@nDAQTA FROM DTLASSTASK INNER JOIN ESTASKASS ON DTLASSTASK.TAID=ESTASKASS.TAID WHERE ESTASKASS.TAID=@nTAID AND ESTASKASS.TAIDIN=@nTAIDIN"
sapreste aiutarmi?
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
lun 20 ott 2008 - 13:22
>ho bisogno di fare un update di una tabella ma mi viene visualizzato
>questo errore:
>Violazione del vincolo PRIMARY KEY Impossibile inserire la chiave
>duplicata nell'oggetto.
Ciao Fabio,
Che DBMS utilizzi?
>TAID,TAIDIN e DAID formano la chiave primaria della tabella;
>TAID e TAIDIN sono anche chiave esterna di una tabella le quali
>chiavi primarie sono proprio TAID e TAIDIN.
>
>queste sono le query che ho provato a fare ma il risultato è
>sempre lo stesso:
>"UPDATE DTLASSTASK SET DAID=@nDAID, DAQTA=@nDAQTA FROM DTLASSTASK
>WHERE TAID=@nTAID AND TAIDIN=@nTAIDIN"
>
>"UPDATE DTLASSTASK SET DAID=@nDAID, DAQTA=@nDAQTA FROM DTLASSTASK
>INNER JOIN ESTASKASS ON DTLASSTASK.TAID=ESTASKASS.TAID WHERE
>ESTASKASS.TAID=@nTAID AND ESTASKASS.TAIDIN=@nTAIDIN"
Questi comandi aggiornano DAID che fa parte della PK specificando nella clausola WHERE solo TAID e TAIDIN.
Di conseguenza stai cercando di aggiornare più righe, generando una violazione della PK.
>sapreste aiutarmi?
Posta la struttura della tabella (CREATE TABLE) completa di constraints, alcune righe di prova (INSERT INTO) ed il result set finale che vuoi ottenere con quei dati.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
bolla111
Profilo
| Senior Member
293
messaggi | Data Invio:
lun 20 ott 2008 - 14:55
io uso ms sql server 2005
le tabelle le creo nonrmalmente, non da codice...
cmq il mio obiettivo è quello di modificare solo un parametro (daqta) gli altri glieli devo passare e basta, tanto non vengono modificati, sono di sola lettura...
cmq ho specificato nella WHERE anche DAID=@nDAID e sembra funzionare...l'unico problema è che non mi carica + la pagina dopo ma non è un problema di query...
cmq grazie...
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
lun 20 ott 2008 - 14:58
>io uso ms sql server 2005
>le tabelle le creo nonrmalmente, non da codice...
Genera lo script da SSMS...
>cmq il mio obiettivo è quello di modificare solo un parametro
>(daqta) gli altri glieli devo passare e basta, tanto non vengono
>modificati, sono di sola lettura...
>cmq ho specificato nella WHERE anche DAID=@nDAID e sembra funzionare...l'unico
>problema è che non mi carica + la pagina dopo ma non è un problema
>di query...
Se non specifichi TUTTA la PK nella clausola WHERE, andrai a modificare n righe. Se la combinazione dei valori delle 3 colonne che costituiscono la PK viene ripetuta per più di una riga, otterrai l'errore evidenziato nel primo post.
>cmq grazie...
Prego cmq
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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 !