Newsgroup: it.comp.appl.access
Titolo: relazioni: on delete set null

ciao
ho una tabella clienti e una tipoClienti
ovviamente ogni cliente ha il campo TipoCliente collegato alla tabella 
tipoClienti
Se cancello un record di TipoClienti vorrei che si impostasse a NULL il 
campo TipoCliente del cliente. Mi sembra una necessita' corretta la mia.
Non ho trovato come fare nella gestione delle relazioni di access!
Se imposto l'integrita' referenziale mi impedisce di cancellare un 
tipocliente perche ci sono dei clienti correlati.
Come fare?
grazie

 grazie
Hai settato il FLAG Cancella Record Correlati...??
Solitamente non è preferibile cancellare, o non sempre
è una scelta felice, ma si opta per usare un Campo CANCELLATO
di tipo FLAG Si/No che consente la selezione.
@ALex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
ciao Alex
come dici tu, se metto il flag "Cancella Record Correlati" e cancello 
una categoria di clienti...vengono cancellati tutti i clienti di quel 
tipo , quindi e' una cosa che non desidero fare
Non e' possibile fare in modo che se cancello una categoria, tutti i 
clienti di quella categoria assumano il valore NULL sul campo 
TIPOCLIENTE ??? che sarebbe la cosa piu' corretta anche a livello di 
concetto !!
grazie davvero

 grazie davvero
In automatico direi che non è fattibile, o meglio devi intercettare
il DELETE della categoria, e questo è semplice visto che
lo fà l'operatore.
A quel punto fai una Query UPDATE:
UPDATE NomeTabella 
SET NomeCampo=Null
WHERE NomeCategoria='TuaCategoria'
Continuo ad insistere perchè invece di metterli a NULL tu 
valuti l'uso del campo FLAG, anche metterli a NULL non serve
a NULL...!
@Alex


 @Alex
Ciao.
-- 
Sergio MAZZA 

 Ciao.


 ne dici potrei avere un futuro come Presidente del "Coniglio" ?
Hi! Hi!
...Nella "casa del pollame"?


 wrote in message
news:dj545d$bkk$
1...@area.cu.mi.it

Con l'influenza aviaria in giro non è una bella domanda
da fare...!
;-)


 
grazie alex, pero' insisto anche io :)
mettere a null una chiave esterna che non punta piu' a nessun record e' 
concettualmente corretto, mentre se metto un FLAG 'cancellato' come 
proponi tu uso un CAMPO aggiuntivo (spreco di dati superflui) e in piu' 
ho delle chiavi esterne che non puntano a nulla.
sbaglio?
ciao e grazie della disponibilita'

 ciao e grazie della disponibilita'
Mettere a Null occupi sempre spazio, un campo di tipo Si/No
occupa 1Bit.
Ora l'utilità di mettere a NULL è assolutamente inesistente, vanno
eventualmente cancellati con una Query Action.
L'utilità di NON cancellarli è data spesso dall'esperienza di chi
fà gestionali ed ha a che fare con clienti che ti chiedono di
riesumare i dati....!
Che questo occupi più spazio .... assolutamente no, non sarà quel
BIT che ti rode le unghie...!
Le chiavi esterne che non puntano a nulla...?
Supponi di dover dare la possibilità di recuperare dati cancellati
cosa assai probabile, fai una Query Select con condizione
Cancellato=True e dai così la possibilità di recupero.
Non ti voglio convincere, fai come credi sei libero.


 Non ti voglio convincere, fai come credi sei libero.
va benissimo...mi bastava avere l'opinione di altri...valutero' come 
fare in base poi alle esigenze specifiche del mio caso..che alla fine e' 
l'ago della bilancia..a meno che non ci siano motivi di fondo per decidere .
ti ringrazio infinitamente.

 ti ringrazio infinitamente.
Non spaventarti che non è affatto complesso, è estremamente banale
e spesso utilissimo.
Saluti


 
OK , e ti ringrazio della tecnica che potra' essermi utile, tuttavia non 
ho paura della difficolta', e' solo che non voglio fare cose oltre cio 
che mi serve.
Vorrei solo capire come mai in access non ci sia la possibilita' in 
automatico di impostare un trigger che setta a null delle chiavi esterne 
che e' naturale che vegano settate a null..
PS: mi rompe sto batti e ribatti..ma e' cmq bello discutere 
civilmente... :)  grazie !