搜尋

首頁  >  問答  >  主體

java - 觸發器使兩個表同時更新

使用 mysql,圖書管理,問題涉及兩張表,books 和 lender

問題來了:

#建立一個觸發器想要實現借書自增數量/還書自減,但是我寫的觸發器並不能實現這個功能,最後的amount 並沒有變化(表中有的amount 是我手動輸入的)

在books 被借閱屬性islend 更新時在lender 表中同時更新借書數量amount,其中
islend 屬性更新後保存的是藉閱人lender 的id,lender 中id 是主鍵,books 表中islend 是外鍵,連接這兩張表。

兩個資料庫表結構在下方給出,目前寫的觸發器如下:

CREATE TRIGGER returnBook
AFTER UPDATE ON books
FOR EACH ROW
BEGIN
UPDATE lender
SET amount = lender.amount - 1
WHERE id = new.isLend;
END

lender 表結構如下:

#books 表結構如下:

#測試語句
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();
    }

可以正常實作借/還書功能,但是觸發器的功能並沒有實作

高洛峰高洛峰2749 天前908

全部回覆(2)我來回復

  • 欧阳克

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

    雷雷

    回覆
    0
  • 我想大声告诉你

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

    觸發器本身沒什麼問題,除了要注意 @凌晨消失の夏日[lingchenxiaoshixiari] 說的null的問題

    可以在觸發器中增加一個類似日誌的表,看是否觸發器執行過

    回覆
    0
  • 取消回覆