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 :
"Can't update table 'reference' in stored function/trigger becaused by statement which invoked this stored function/trigger."
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 ?

Code Procédure :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.