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