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 ?