Heim > Fragen und Antworten > Hauptteil
Bei Verwendung von MySQL, Buchverwaltung, betrifft das Problem zwei Tabellen, Bücher und Kreditgeber
Hier kommt die Frage:
Erstellen Sie einen Auslöser, um die automatische Erhöhung der ausgeliehenen Bücher/Verringerung der zurückgegebenen Bücher zu realisieren, aber der von mir geschriebene Auslöser kann diese Funktion nicht realisieren und der Endbetrag hat sich nicht geändert (einige Beträge in der Tabelle wurden von mir manuell eingegeben)
Wenn Bücher ausgeliehen werden und das Inselattribut aktualisiert wird, wird gleichzeitig die Anzahl der ausgeliehenen Bücher in der Leihgebertabelle aktualisiert.
Nach der Aktualisierung des Inselattributs wird die ID des Entleihers gespeichert Der Primärschlüssel und die Insel in der Buchtabelle sind der Fremdschlüssel. Die Verbindung dieser beiden Tabellen.
Die beiden Datenbanktabellenstrukturen sind unten aufgeführt. Die derzeit geschriebenen Trigger lauten wie folgt:
CREATE TRIGGER returnBook
AFTER UPDATE ON books
FOR EACH ROW
BEGIN
UPDATE lender
SET amount = lender.amount - 1
WHERE id = new.isLend;
END
Die Struktur der Rendertabelle ist wie folgt:
Die Struktur der Büchertabelle ist wie folgt:
Test-Anweisung
String sql = „UPDATE Bücher 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();
}
Die Ausleih-/Rückgabefunktion kann normal implementiert werden, die Triggerfunktion ist jedoch nicht implementiert
欧阳克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
触发器本身没什么问题,除了要注意 @凌晨消失の夏日[lingchenxiaoshixiari] 说的null的问题
可以在触发器中增加一个类似日志的表,看是否触发器执行过