Bonjour,
J'ai un problème un peu similaire mais c'est différent car j'utilise une procédure stockée et un trigger, j'explique mon cas :
Ma procédure me permet d'ajouter une ligne dans ma table Reservation, et mon trigger me permet d'incrementer le champ Reservation de ma table Reference à chaque ajout d'une ligne dans la table Reservation.
Mais cela ne fonctionne pas il me renvoi l'erreur :
Je pense que cette erreur survient lorsque je souhaite ajouter ma ligne car je demande le champ Reservation de la table Reference comme nouvel ID de ma nouvelle ligne.. non ? :oops:Citation:
"Can't update table 'reference' in stored function/trigger becaused by statement which invoked this stored function/trigger."
Code Procédure :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 USE HOTEL; DROP PROCEDURE IF EXISTS ReservationAjout; CREATE PROCEDURE ReservationAjout (IN IDReservation int, IN IDClient int, IN IDChambre int, IN DateDebut date, IN DateFin date, OUT RetourVal int) BEGIN IF IDReservation = 0 Then INSERT INTO Reservation (IDReservation , IDClient, IDChambre, DateDebut, DateFin) VALUES ((select Reservation from reference), IDClient, IDChambre, DateDebut, DateFin); ELSE INSERT INTO Reservation (IDReservation, IDClient, IDChambre, DateDebut, DateFin) VALUES (IDReservation, IDClient, IDChambre, DateDebut, DateFin); END IF; SET RetourVal = LAST_INSERT_ID(); END;
Code Trigger :
Code:
1
2
3
4
5 CREATE TRIGGER `hotel`.`TrigReservation` AFTER INSERT ON hotel.reservation FOR EACH ROW BEGIN UPDATE Reference SET Reference.Reservation=Reference.Reservation+1; END;
Si quelqu'un pouvait m'aider ?
Si vous n'avez pas compris qqchose dite le moi :)
Merci beaucoup.