Maison > Questions et réponses > le corps du texte
En utilisant MySQL, gestion des livres, le problème implique deux tables, livres et prêteur
Voici la question :
Créez un déclencheur pour réaliser l'incrémentation automatique des livres empruntés/diminution des livres restitués, mais le déclencheur que j'ai écrit ne peut pas réaliser cette fonction, et le montant final n'a pas changé (certains montants dans le tableau ont été saisis manuellement par moi)
Lorsque les livres sont empruntés et que l'attribut islend est mis à jour, le nombre de livres empruntés est mis à jour en même temps dans le tableau du prêteur.
Une fois l'attribut islend mis à jour, il enregistre l'identifiant de l'emprunteur, l'identifiant du prêteur est. la clé primaire, et l'islend dans la table books est la clé étrangère La connexion entre ces deux tables.
Les deux structures de tables de base de données sont données ci-dessous. Les déclencheurs actuellement écrits sont les suivants :
CREATE TRIGGER returnBook
AFTER UPDATE ON books
FOR EACH ROW
BEGIN
UPDATE lender
SET amount = lender.amount - 1
WHERE id = new.isLend;
END
La structure de la table de rendu est la suivante :
La structure de la table des livres est la suivante :
Déclaration de test
String sql = "UPDATE books SET isLend=?,date=NULL WHERE bookId=? AND isLend=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, "1");
ps.setString(2, String.valueOf(bookId));
ps.setString(3, String.valueOf(id));
row = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
La fonction emprunt/retour peut être implémentée normalement, mais la fonction de déclenchement n'est pas implémentée
欧阳克2017-06-28 09:25:33
CREATE TRIGGER lendBook
AFTER UPDATE ON books
FOR EACH ROW
BEGIN
sql语句1;
sql语句2;
END
我想大声告诉你2017-06-28 09:25:33
Il n'y a rien de mal avec le déclencheur lui-même, sauf que nous devons faire attention au problème nul mentionné par @夜 qui disparaît en été [lingchenxiaoshixiari]
Vous pouvez ajouter un tableau de type journal au déclencheur pour voir si le déclencheur a été exécuté