-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatbaseCommands.sql
More file actions
65 lines (57 loc) · 1.59 KB
/
datbaseCommands.sql
File metadata and controls
65 lines (57 loc) · 1.59 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
56
57
58
59
60
61
62
63
64
65
create database LibraryDatabase;
use LibraryDatabase;
CREATE TABLE PUBLISHER(
NAME VARCHAR (20) PRIMARY KEY,
PHONE varchar(10),
ADDRESS VARCHAR(20)
);
create table Book (
book_id integer primary key,
title varchar(20),
author varchar(10),
publisher varchar(20),
year_of_publish integer,
foreign key (publisher) references PUBLISHER (NAME) on delete cascade
);
create table LibraryBranch(
branchId integer primary key,
branchName varchar(20),
branchAddress varchar(20)
);
CREATE TABLE BOOK_COPIES(
NoOfCopies INTEGER,
bookId integer,
branchId integer, foreign key(branchId) REFERENCES LibraryBranch (branchId) ON DELETE
CASCADE, foreign key (bookId) REFERENCES Book (book_id) ON DELETE CASCADE,
PRIMARY KEY (bookId,branchId)
);
CREATE TABLE BOOK_LENDING(
DATE_OUT date,
DUE_DATE date,
BOOK_ID integer, foreign key(BOOK_ID) REFERENCES Book (book_id) ON DELETE CASCADE,
BRANCH_ID integer, foreign key(BRANCH_ID) references LibraryBranch (branchId) ON DELETE CASCADE,
CARD_NO integer,
primary key(BOOK_ID,BRANCH_ID,CARD_NO)
);
delimiter //
create procedure fine(IN dd1 date,IN dd2 date)
begin
select datediff(dd1,dd2)*5 as calcFine;
end;//
delimiter ;
delimiter //
create trigger decrement
after insert on BOOK_LENDING
FOR each row
begin
UPDATE BOOK_COPIES SET NoOfCopies=NoOfCopies-1 where bookId=new.BOOK_ID and branchId=new.BRANCH_ID;
end;//
delimiter ;
delimiter //
create trigger increment
before delete on BOOK_LENDING
FOR each row
begin
UPDATE BOOK_COPIES SET NoOfCopies=NoOfCopies+1 where bookId=old.BOOK_ID and branchId=old.BRANCH_ID;
end;//
delimiter ;