Heim  >  Fragen und Antworten  >  Hauptteil

Java – Trigger zum gleichzeitigen Aktualisieren von zwei Tabellen

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

高洛峰高洛峰2670 Tage vor835

Antworte allen(2)Ich werde antworten

  • 欧阳克

    欧阳克2017-06-28 09:25:33

    CREATE TRIGGER lendBook
    AFTER UPDATE ON books
    FOR EACH ROW
    BEGIN
    sql语句1;
    sql语句2;
    END

    Antwort
    0
  • 我想大声告诉你

    我想大声告诉你2017-06-28 09:25:33

    触发器本身没什么问题,除了要注意 @凌晨消失の夏日[lingchenxiaoshixiari] 说的null的问题

    可以在触发器中增加一个类似日志的表,看是否触发器执行过

    Antwort
    0
  • StornierenAntwort