-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreate.sql
More file actions
55 lines (55 loc) · 1.65 KB
/
create.sql
File metadata and controls
55 lines (55 loc) · 1.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
CREATE TABLE book (
book_id INTEGER PRIMARY KEY AUTO_INCREMENT,
author_id INT,
title VARCHAR(255),
isbn INT,
available BOOL,
genre_id INT
);
CREATE TABLE author(
author_id INTEGER PRIMARY KEY AUTO_INCREMENT,
first_name VARCHAR(255),
last_name VARCHAR(255),
birthday DATE,
deathday DATE
);
CREATE TABLE patron(
patron_id INTEGER PRIMARY KEY AUTO_INCREMENT,
first_name VARCHAR(255),
last_name VARCHAR(255),
loan_id INT
);
CREATE TABLE reference_books(
reference_id INTEGER PRIMARY KEY AUTO_INCREMENT,
edition INT,
book_id INT,
FOREIGN KEY (book_id) REFERENCES book(book_id) ON UPDATE SET NULL ON DELETE SET NULL
);
INSERT INTO reference_books(edition, book_id) VALUES(5,32);
CREATE TABLE genre(
genre_id INTEGER PRIMARY KEY,
genres VARCHAR(100)
);
CREATE TABLE loan(
loan_id INTEGER PRIMARY KEY AUTO_INCREMENT,
patron_id INT,
date_out DATE,
date_in DATE,
book_id INT,
FOREIGN KEY (book_id) REFERENCES book(book_id) ON UPDATE SET NULL ON DELETE SET NULL
);
DELIMITER //
CREATE PROCEDURE checkOut(IN patronID INT, IN bookID INT)
BEGIN
INSERT INTO loan(patron_id,date_out,book_id)
VALUES (patronID,CURDATE(),bookID);
UPDATE book SET available=false WHERE book_id=bookID;
UPDATE patron INNER JOIN loan SET patron.loan_id = (SELECT MAX(loan_id) FROM loan WHERE patron_id=patronID AND date_in IS NULL) WHERE patron.patron_id=patronID;
END//
CREATE PROCEDURE checkIn(IN patronID INT, IN bookID INT)
BEGIN
UPDATE loan SET date_in = CURDATE();
UPDATE book SET available=true WHERE book_id=bookID;
UPDATE patron SET patron.loan_id = NULL WHERE patron.patron_id=patronID;
END//
DELIMITER ;