Richiesta strana

martedì 14 agosto 2007 - 11.44

_J_ Profilo | Senior Member

salve ragazzi, forse vi sembrerà una richiesta strana da parte mia, ma mi serve per capire se ho fatto bene le cose.

ho una tabella 'cittadino' (chiave primaria:cod_persona) e una 'domicilio' (chiavi primarie: 'cod_via' e 'num_civico') collegate mediante 'abita_in' (chiavi esterne: 'cod_persona' verso 'cittadino', e 'cod_via' e 'num_civico' verso 'domicilio').
sto usando sqlserver2005...quello che vorrei fare è che nel momento in cui inserisco un domicilio per un certo cittadino, devo controllare se esiste già, e :
1)se tale domicilio non esiste, devo crearlo (un cittadino ha una casa)
2)se tale domicilio esiste, devo aggiornarlo (la casa cambia abitante)

questa qui sotto è la stored che ho fatto, ma a runtime la tabella 'abita_in' tiene traccia solo dell'ultimo record inserito, mentre nella tabella 'domicilio' ci sono tutte le insert che faccio, praticamente è come se un cittadino che ha più case ne possedesse solo una...

quello che vi chiedo (se possibile) è di interpretare quanto ho scritto qui, pre vedere se la logica che uso nel programma è corretta...

ALTER PROCEDURE dbo.ins_domicilio
(
@cod_p int,
@data_v datetime,
@via int,
@num varchar(4),
@flag varchar(1),
@scala varchar(1),
@piano int,
@interno int
)

AS

if not exists(select cod_via,num_civico from domicilio where (cod_via=@via and num_civico=@num))

insert into domicilio
(
cod_via, num_civico, flag_domicilio_corrente, n_scala, n_piano,n_interno
)

values
(
@via,
@num,
@flag,
@scala,
@piano,
@interno
)

if exists(select cod_via,num_civico from domicilio where (cod_via=@via and num_civico=@num))
update abita_in
set cod_persona=@cod_p, cod_via=@via, num_civico=@num, data_variaz_domicilio=@data_v
where cod_persona=@cod_p


if not exists(select cod_via,num_civico from abita_in where (cod_via=@via and num_civico=@num))

insert into abita_in
(
cod_persona, cod_via, num_civico, data_variaz_domicilio
)
values
(
@cod_p,
@via,
@num,
@data_v
)


if exists (select cod_via,num_civico from abita_in where (cod_via=@via and num_civico=@num))


update abita_in
set cod_persona=@cod_p, cod_via=@via, num_civico=@num, data_variaz_domicilio=@data_v
where cod_persona=@cod_p
RETURN


grazie
a chi mi risponderà!
_J_

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5