Salve a tutti, sto diventando matto....
Sto tentando di costruire un database relazionale impostando correttamente anche le foreign key, indici e tutto il resto.
Quella che vorrei creare e' una semplice tabella di categorie, dove gni categoria puo o meno avere una categoria padre.
Questo e' il codice per generare la tabella:
codice:
CREATE TABLE IF NOT EXISTS `inventario3`.`_categorie` (
`id` CHAR(1) NOT NULL ,
`parent_id` CHAR(1) NULL DEFAULT NULL ,
`nome` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`id`) ,
INDEX `parent` (`parent_id` ASC, `id` ASC) ,
CONSTRAINT `parent`
FOREIGN KEY (`parent_id` )
REFERENCES `inventario3`.`_categorie` (`id` )
ON DELETE RESTRICT
ON UPDATE CASCADE)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1
viene eseguito senza problemi, e al tabella viene creata, inserisco 2 righe per test, dove la 2a in parent_id riporta l'id della prima riga, quando tento di modificare l'id della prima riga mi viene restituito questo errore:
codice:
1451 - Cannot Delete Or Update A Parent Row: a foreign key constrain fails [ecc...]
(mentre invece dovrebbe modifcare il parent_id della seconda riga per adattarsi a quello modificato della prima riga
Se invece elimino la prima riga...la elimina, senza battere ciglio, lasciando parent_id della seconda riga impostato con l'id della prima che ora nn esiste piu, creando quindi un inconsistenza dei dati...
cosa sto sbagliando ? come posso risolvere ?