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
Problema trigger di aggiornamento record correlati dopo un delete
venerdì 16 giugno 2006 - 01.23
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
ricky
Profilo
| Junior Member
179
messaggi | Data Invio:
ven 16 giu 2006 - 01:23
Ciao posto un problema :
use tempdb
go
create table OrdiniVenditaRighe(ID int,TipoDoc
varchar(2),NumeroDoc,IDROrdiniVendita int,IDTestata int)
go
insert into OrdiniVenditaRighe values(7,'OV',1,1,1)
insert into OrdiniVenditaRighe values(8,'OV',1,2,1)
insert into OrdiniVenditaRighe values(9,'OV',2,3,2)
insert into OrdiniVenditaRighe values(10,'DT',012006,7,3)
insert into OrdiniVenditaRighe values(11,'DT',012006,8,3)
insert into OrdiniVenditaRighe values(12,'DT',012006,9,3)
go
Quindi
Due Ordini OV (numero doc 1 e 2) vengono inseriti in un unico DT (012006)
con appunto tre elementi (con riferimento ai 3 elementi dell'ordine 7,8,9)
Ho una tabella testata per i vari documenti
create table OrdiniVenditaTesta(ID int,TipoDoc varchar(2),Stato varchar)
insert into OrdiniVenditaTestavalues(1,'OV',??)
insert into OrdiniVenditaTestavalues(2,'OV',??)
insert into OrdiniVenditaTestavalues(3,'DT',??)
A questo punto se cancello un documento, nel mio caso il DT, devo modificare
lo stato della testata dei documenti che ne facevano parte (in questo caso
devo modificare lo stato dei due ordini corrispondendi agli ID 1,2 della
testata -> IDTestata int)
Basandomi su questa logica:
Se cancello un OV metto allo stato della testata dei documenti che avevano generato l'OV lo stato P
Se cancello un DT metto allo stato della testata dei documenti avevano generato la DT (quindi l'OV) lo statao C
Quindi, io non devo modificare lo stato del documento in considerazione (come viene mi sembra venga fatto nel trigger allegato) ma del documento (testata) che ha generato il documento in considerazione
In sintesi la logica è la seguente: dalle righe del mio documento cancellato, recupero IDROrdiniVendita che rappresenta l'ID della riga del documento che l'ha generata (quindi del
documento padre), da questa riga ricavo l'ID della testata e a questo modifico lo stato della testata (dato che si tratta appunto della testata del documento "padre" del documento che sto cancellando)
E' piu facile capire la logica che scriverla
... ma il vero problema è il trigger
Qualcuno può aiutarmi?
create trigger tr_Delete on OrdiniVenditaRighe
for delete
as
update OrdiniVenditaTesta
set Stato=case v.TipoDoc when 'OV' then 'P'
when 'DT' then 'C'
else Stato end
from(select IDTestata,TipoDoc from deleted
group by IDTestata,TipoDoc)v
where v.IDTestata=OrdiniVenditaTesta.ID
go
Thanks
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 !