PDA

Visualizza la versione completa : [MySql] Self Referencing foreign key


lelmarir
30-12-2009, 03:51
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:


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:


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 ?

Loading