Menggunakan mysql, pengurusan buku, masalahnya melibatkan dua jadual, buku dan pemberi pinjaman
Inilah soalannya:
Buat pencetus untuk merealisasikan kenaikan automatik buku yang dipinjam/penurunan buku yang dipulangkan, tetapi pencetus yang saya tulis tidak dapat merealisasikan fungsi ini, dan jumlah akhir tidak berubah (beberapa jumlah dalam jadual telah saya masukkan secara manual)
Apabila buku dipinjam dan atribut islend dikemas kini, jumlah buku yang dipinjam dikemas kini dalam jadual pemberi pinjaman pada masa yang sama
Selepas atribut islend dikemas kini, ia menyimpan id peminjam, id dalam pemberi pinjaman adalah. kunci utama, dan pulau dalam jadual buku ialah kunci asing Sambungan Kedua-dua jadual ini.
Dua struktur jadual pangkalan data diberikan di bawah Pencetus yang sedang ditulis adalah seperti berikut:
CREATE TRIGGER returnBook
AFTER UPDATE ON books
FOR EACH ROW
BEGIN
UPDATE lender
SET amount = lender.amount - 1
WHERE id = new.isLend;
END
Struktur jadual render adalah seperti berikut:
Struktur meja buku adalah seperti berikut:
Pernyataan ujian
String sql = "KEMASKINI buku 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();
}
Fungsi pinjam/pemulangan boleh dilaksanakan seperti biasa, tetapi fungsi pencetus tidak dilaksanakan
Tidak ada yang salah dengan pencetus itu sendiri, kecuali kita perlu memberi perhatian kepada masalah batal yang disebut oleh @夜 lenyap pada musim panas [lingchenxiaoshixiari]
Anda boleh menambah jadual seperti log pada pencetus untuk melihat sama ada pencetus telah dilaksanakan