|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
[SQL Server 2008]Stored procedures e/o triggers
Ciao a tutti
![]() Ennesimo quesito rompiglione della giornata: Ho una tabella chiamata fantasiosamente "Prova" ... Vorrei fare in modo che questa tabella possa essere popolata solo se i campi di altre tabelle hanno un determinato valore, per esempio: Codice:
TBL_PIPPO id costo pagato (True/False) <- solo se True TBL_TOPOLINO id descrizione data (solo se <= data odierna) Poi mi sono chiesto: E se le tabelle dalle quali prendere i dati da verificare saranno molte ? Mi dovrò scrivere un trigger chilometrico pieno di select li select la... Ho quindi pensato un'altra cosa: Se per ciascuna TBL_PIPPO et similia di interesse, creo una tabella relativa "TBL_PIPPO_OK" (.......) nella quale inserisco con un trigger AFTER INSERT (sulla tabella originaria) solo le righe dove quel determinato valore è consono per "Prova" ? In questo modo potrei far prelevare i valori da inserire su "Prova" solo da queste tabelle. Generalmente, un problemino del genere lato db, come si affronta ? grazie a tutti ![]() RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
Quote:
__________________
http://www.tevigroup.it/ |
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
![]() No, forse mi sono spiegato io male ![]() I dati sono già presenti nelle altre tabelle. Per fare un esempio più concreto, è come se volessi impedire di vendere ad un cliente, quindi generare una fattura, se delle fatture vecchie non son state ancora saldate. Immagino quindi l'utente del programma che richiama il modulo per la fatturazione, richiama il cliente, in questo momento dovrebbe avvenire il "check"; se tutto è ok (TBL_PIPPO.pagato/saldo = 0 etc..) allora può andare avanti.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
Quote:
__________________
http://www.tevigroup.it/ |
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
No, lui è il client, il server è il database ![]()
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
Quote:
![]()
__________________
http://www.tevigroup.it/ |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Buondì
![]() Il fatto è che i campi da controllare sono molti e appartengono a diverse tabelle. In mente ho il disegno di una tabella di "check", per es.: Codice:
tbl_TrustedCustomers customerId pagaRegolarmente bilancioInRegola haLeSegretarieBBone....(ehm..)
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
Quote:
__________________
http://www.tevigroup.it/ |
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Certo, ma volevo farlo con un trigger in modo da iniziare a capire a cosa servono e come operano
![]() Ho infatti questo problema: Codice:
CREATE TRIGGER sometrg ON tbl_Pippo AFTER INSERT,UPDATE AS BEGIN SET NOCOUNT ON; INSERT INTO someTable(a, b, c) SELECT x, y, z FROM INSERTED; END Se invece faccio un UPDATE sulla tbl_Pippo, non mi aggiorna la riga su 'someTable' ma ne inserisce una nuova... E' ovvio che sbaglio qualcosa .... ![]()
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
certo che non ti fa l'update l'istruzione parla chiaro in caso di inserimento o aggiornamento fai una insert
__________________
http://www.tevigroup.it/ |
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
Anche dalla documentazione ufficiale, non sono riuscito a trovare un esempio dove sono insieme se non per il "FOR INSERT,UPDATE,DELETE" ma sempre sulla stessa tabella. Ah, cosa più importante, ma è corretto pensare ad un trigger che si occupi di tutte le cose o è meglio scriverne uno per ogni caso ?
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
|
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
Quote:
__________________
http://www.tevigroup.it/ |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:29.