Errore 1452

Federico Giacalone

Nuovo Utente
5 Feb 2016
3
0
0
Salve a tutti sono nuovo nel forum.
Ho un problema.
Sto realizzando un piccolo database utilizzando mysql workbanch per un esame universitario.
Purtroppo sono non riesco a creare un trigger, o meglio il trigger workbanch lo accetta, ma quando vado ad inserire i dati nella tabella compare questo errore:
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`AutoNoleggio`.`tbl_noleggio`, CONSTRAINT `tbl_noleggio_ibfk_4` FOREIGN KEY (`Targa`) REFERENCES `tbl_automobile` (`Targa`))

Qualcuno potrebbe darmi una mano?

Grazie infinite,
Federico.
 
Molto probabilmente il tuo trigger va a interferire con il vincolo di forein key che ri segnala.. Che trigger stai inserendo?

Inviato dal mio LG-D855 utilizzando Tapatalk
 
Molto probabilmente il tuo trigger va a interferire con il vincolo di forein key che ri segnala.. Che trigger stai inserendo?

Inviato dal mio LG-D855 utilizzando Tapatalk

Questo è il trigger che provo ad inserire, spero veramente che tu riesca a chiarirmi le idee.

PHP:
DELIMITER $$
create trigger tr_disponibile before insert on tbl_noleggio for each row
begin
set @codice = (select id_filiale from tbl_collocazione where tbl_collocazione.Targa= new.Targa); 
update tbl_automobile set Disponibile =0 where tbl_automobile.Targa=new.Targa;
update tbl_filiale set NumeroPostiOccupati = NumeroPostiOccupati -1 
where tbl_filiale.id_filiale = @codice;
END$$
DELIMITER ;

Ti spiego un po meglio la cosa:
Targa è la PK della tabella tbl_automobile.
La tabella tbl_noleggio ha come chiave primaria id_noleggio e al suo interno ha l'attributo Targa come FK.
La tabella tbl_collocazione è una tabella "Relazione" tra la tabella tbl_automobile e la tabella tbl_filiale, contiene gli attributi Targa e id_filiale.
La tabella tbl_filiale ha come PK id_filiale e NumeroPostiOccupati è un semplice attributo di tipo int.

Avevo scritto anche questo ma non funziona lo stesso ovviamente.
Dovrebbe fare le stesse cose ma con una cosa in più come vedi.

PHP:
DELIMITER $$
Create trigger tr_noleggio_automobile after insert on tbl_noleggio for each row 
begin
update tbl_automobile set Disponibile =0 where tbl_automobile.Targa=new.Targa;
set @codice = (select id_filiale from tbl_collocazione where tbl_collocazione.Targa= new.Targa);
update tbl_filiale set NumeroPostiOccupati = NumeroPostiOccupati -1 where tbl_filiale.id_filiale = @codice;
update tbl_collocazione set id_filiale = new.NFiliale where Targa=new.Targa;
update tbl_filiale set NumeroPostiOccupati = NumeroPostiOccupati +1 
where tbl_filiale.id_filiale = NFiliale;

END $$
DELIMITER ;
 
Ciao Scusami se scrivo due volte di seguito.
Ho risolto! L'errore non era legato al trigger, ma all'inserimento successivo dei dati, usando workbanch direttamente per programmare non mi ero accorto di aver inserito un dato con uno 0 piuttosto che con una O. Errore banale che potevo evitare, grazie dell'interessamento! a presto!
 

Discussioni simili