Syntaxe MySQL pour les mises à jour de jointure : incrémentation de la capacité du train en cas d'annulation de réservation
Pour mettre à jour une colonne dans une table en fonction des informations d'une autre table, MySQL fournit une syntaxe JOIN UPDATE. Cela peut être particulièrement utile dans les scénarios où vous devez mettre à jour une colonne en fonction des données d'une table associée.
Exemple : Augmenter la capacité du train en cas d'annulation de réservation
Considérez deux : tables, Train et Réservations. L'objectif est d'incrémenter la colonne Capacité dans la table Train lorsqu'une réservation est annulée dans la table Réservations.
Train +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | TrainID | varchar(11) | NO | PRI | NULL | | | Capacity | int(11) | NO | | 50 | | +----------+-------------+------+-----+---------+-------+ Reservations +---------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+-------------+------+-----+---------+----------------+ | ReservationID | int(11) | NO | PRI | NULL | auto_increment | | FirstName | varchar(30) | NO | | NULL | | | LastName | varchar(30) | NO | | NULL | | | DDate | date | NO | | NULL | | | NoSeats | int(2) | NO | | NULL | | | Route | varchar(11) | NO | | NULL | | | Train | varchar(11) | NO | | NULL | | +---------------+-------------+------+-----+---------+----------------+
Requête pour incrémenter la capacité
La MISE À JOUR JOIN la syntaxe de ce scénario serait :
UPDATE Train t JOIN Reservations r ON (t.TrainID = r.Train) SET t.Capacity = t.Capacity + r.NoSeats WHERE r.ReservationID = "15";
Dans ce requête :
Mise à jour incrémentielle avec valeur arbitraire
Pour incrémenter la capacité d'un nombre arbitraire de sièges, remplacez simplement r.NoSeats par la valeur souhaitée dans le Clause SET :
UPDATE Train t JOIN Reservations r ON (t.TrainID = r.Train) SET t.Capacity = t.Capacity + 5;
Transaction Gestion
Pour effectuer l'incrément et la suppression en une seule transaction :
// Java transaction management code try { // Perform the capacity increment execute SQL UPDATE statement // Delete the reservation execute SQL DELETE statement } catch (SQLException e) { // Transaction rollback logic if an error occurs } finally { // Transaction cleanup logic }
En exécutant la mise à jour avant la suppression, la capacité sera incrémentée correctement avant la suppression de la réservation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!