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
Verificare i dati prima di salvarli
domenica 30 dicembre 2012 - 17.07
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
Windows Server 2008 R2
Zagor60
Profilo
| Junior Member
159
messaggi | Data Invio:
dom 30 dic 2012 - 17:07
salve,
è possibile in sqlserver 2008 verificare che un dato non sia già presente in una tabella prima di essere salvato ?
se si come?
grazie anticipatamente
Saluti
renarig
Profilo
| Expert
517
messaggi | Data Invio:
dom 30 dic 2012 - 20:10
La cosa piu brutta ( ma funziona ) è quella di aggiungere un indice
univoco alla tua colonna
____________________________________________________________
Un po piu bello ( ma non molto ) fai un Trigger
che verifica quello che vuoi e esegue le operazioni
che preferisci
_______________________________________________________________
a parer mio la cosa migliore è che sia la applicazione a fare
le verifiche che ti interessano
e a inserire i dati solo se le verifiche sono Ok
______________________________________________
.
Zagor60
Profilo
| Junior Member
159
messaggi | Data Invio:
dom 30 dic 2012 - 21:18
salve,
La cosa piu brutta ( ma funziona ) è quella di aggiungere un indice
univoco alla tua colonna
- questo l'ho fatto
____________________________________________________________
Un po piu bello ( ma non molto ) fai un Trigger
che verifica quello che vuoi e esegue le operazioni
che preferisci
-- questo non so come si usa
_______________________________________________________________
a parer mio la cosa migliore è che sia la applicazione a fare
le verifiche che ti interessano
e a inserire i dati solo se le verifiche sono Ok
---questo l'ho fatto
-- pensavo che in sql server ci fosse un'altro sistema
cmq grazie
ma_di
Profilo
| Junior Member
163
messaggi | Data Invio:
lun 31 dic 2012 - 11:35
Ciao, se ho capito bene la domanda
hai provato con
IF EXISTS (SELECT * FROM t1 WHERE xxx = yyy )
BEGIN
.
.
.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
lun 31 dic 2012 - 12:43
>Ciao, se ho capito bene la domanda
>hai provato con
>IF EXISTS (SELECT * FROM t1 WHERE xxx = yyy )
>BEGIN
Ciao,
l'importante in questa soluzione è che il predicato espresso nella where sia opportunamente indicizzato, per fare in modo di non dover "perdere" troppo tempo nel testare l'esistenza del valore in tabella. Siccome parliamo di 2008 inoltre, c'è uno statement che può essere usato proprio per una gestione dei dati esistenti o meno.
Ad esempio, se il tuo caso è
SE ESISTE AGGIORNA (o non fare nulla) ALTRIMENTI INSERISCI, puoi (oltre a quella if proposta, che mi sembra una buona strada da seguire) utilizzare il MERGE statement.
Questo di consente anche di inserire dati in maniera tabellare (qualora tu debba fare più di un inserimento, riducendo quindi il roundtrip a server passando invece delle tabelle).
La guida è qui:
http://technet.microsoft.com/en-us/library/bb510625.aspx
Come dicevo però, quella IF proposta è ottima, cerca di fare in modo che i campi di controllo siano indicizzati e che non creino problemi alle performance della tua query.
Il trigger invece non lo trovo il massimo della vita per una serie di motivi:
- transazione allungata
- gestione dell'errore riduttiva
- invisibilità dell'oggetto (devi ricordarti che esiste, mentre una logica di business visibile da codice è più manutenibile
- forse uno strumento troppo basso livello per la gestione di questa casistica
Buon Anno!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi
Zagor60
Profilo
| Junior Member
159
messaggi | Data Invio:
lun 31 dic 2012 - 14:18
Grazie Proverò
Auguri di buon anno anche a te e a tutto il team .
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 !