salve, volevo qualche delucidazione sulle chiavi esterne, le uso gia, e mi trovo bene ma volevo implementare una funzione che, forse, non è possibile ottenere in SQL

ho queste due tabelle

FORNITORE
id
nome
ecc

PRODOTTO
id
id_fornitore
nome
ecc

aggiungendo una chiave esterna sul campo PRODOTTO.id_fornitore -> FORNITORE.id e settando on delete cascade, on update no action posso far in modo che cancellando un fornitore, vengano cancellati in automatico, e senza scrivere codice, tutti i prodotti associati a quel fornitore.

funzione molto molto comoda, quanto pericolosa... se ho 100 prodotti associati ad un fornitore e cancello per sbaglio il fornitore, perderò tutti e 100 i prodotti.

a questo punto per avere uno storico, e per evitare casini, avevo pensato di effettuare delle cancellazioni logiche dal DB inserendo un campo enum attivo nelle tabelle FORNITORE e PRODOTTO con valori 'si','no'.

in caso di cancellazione di un fornitore (ovviamente senza la chiave esterna) il campo attivo va settato su 'no' e tutti i prodotti restano nel db.

FATTA QUESTA PREMESSA, LA MIA DOMANDA è QUESTA
in SQL posso creare una chiave esterna che mi fa questo?

se aggiorno il campo FORNITORE.attivo e il valore è uguale a 'no' imposta tutti i campi PRODOTTO.attivo su 'no' dove FORNITORE.id è uguale a PRODOTTO.id_fornitore...

in php la cosa sarebbe molto facile, ma posso farlo fare ad una chiave esterna?
nelle chiavi esterne c'è anche il valore ON UPDATE, si possono aggiungere delle condizioni

spero di essere stato chiaro, aspetto un vostro riscontro.

GRAZIE