grazie per il consiglio, cmq io son riuscito, con un po di prove, ad ottenere qualcosa
se cambio il valore di attivo nel campo padre cambia anche il valore di attivo nel campo figlio
posto un po di SQL
codice:
-- Struttura della tabella `fornitore`
--
CREATE TABLE IF NOT EXISTS `fornitore` (
`FORNITORE_id` bigint(10) NOT NULL auto_increment,
`FORNITORE_nome` varchar(100) NOT NULL,
`FORNITORE_attivo` varchar(100) NOT NULL,
PRIMARY KEY (`FORNITORE_id`),
KEY `FORNITORE_id` (`FORNITORE_id`,`FORNITORE_attivo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
-- --------------------------------------------------------
--
-- Struttura della tabella `prodotto`
--
CREATE TABLE IF NOT EXISTS `prodotto` (
`PRODOTTO_id` bigint(10) NOT NULL auto_increment,
`FORNITORE_id` bigint(10) NOT NULL,
`PRODOTTO_nome` varchar(100) NOT NULL,
`PRODOTTO_attivo` varchar(100) NOT NULL,
PRIMARY KEY (`PRODOTTO_id`),
KEY `FORNITORE_id` (`FORNITORE_id`,`PRODOTTO_attivo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
ALTER TABLE `prodotto`
ADD CONSTRAINT `prodotto_fk` FOREIGN KEY (`FORNITORE_id`, `PRODOTTO_attivo`) REFERENCES `fornitore` (`FORNITORE_id`, `FORNITORE_attivo`) ON UPDATE CASCADE;
con questa chiave esterna doppia ho messo in relazione sia fornitore.FORNITORE_id->prodotto.FORNITORE_id che fornitore.FORNITORE_attivo-> prodotto.PRODOTTO_attivo...
effettuando una cancellazione logica e settando il campo fornitore.FORNITORE_attivo = no, tutti i campi prodotto.PRODOTTO_attivo andranno su no (dove fornitore.FORNITORE_id = prodotto.FORNITORE_id)
E FINO A QUI CI SIAMO...
solo che... se voglio cancellare un prodotto (quindi un capo dalla tabella figlio) impostando il valore di attivo su NO l'sql mi darà errore per via della chiave... come posso ovviare a questo inconveniente?
grazie