Thank you to anyone who has already donated - your generous donations helped make three months of treatment possible.

My brother Nate continues to fight stage IV Hodgkin's lymphoma. He's just 31, with a wife and baby girl. They have no active income (since he's been unable to return to work), no insurance, and cannot afford the treatment he needs. Nate and his family need your help. Please consider a donation, every dollar helps. Thanks.


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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
-- TABLES

drop table if exists customers;
create table customers
(
cust_id smallint unsigned not null auto_increment primary key,
name varchar(255) not null
)
engine=innodb;

drop table if exists orders;
create table orders
(
order_id int unsigned not null auto_increment primary key,
cust_id smallint unsigned not null
)
engine=innodb;

drop table if exists order_items;
create table order_items
(
order_id int unsigned not null,
prod_id smallint unsigned not null,
primary key (order_id, prod_id)
)
engine=innodb;

-- STORED PROCS

drop procedure if exists cascade_delete_customer;
delimiter #

create procedure cascade_delete_customer
(
in p_cust_id smallint unsigned
)
begin

declare rows int unsigned default 0;

-- delete order items

delete oi from order_items oi 
 inner join orders o on o.order_id = oi.order_id and o.cust_id = p_cust_id;

set rows = row_count();

-- delete orders

delete from orders where cust_id = p_cust_id;

set rows = rows + row_count();

-- delete customer

delete from customers where cust_id = p_cust_id;

select rows + row_count() as rows;

end#

delimiter ;

-- TEST DATA

insert into customers (name) values ('c1'),('c2'),('c3'),('c4');

insert into orders (cust_id) values (1),(2),(3),(1),(1),(3),(2),(4);

insert into order_items (order_id, prod_id) values 
(1,1),(1,2),(1,3),
(2,5),
(3,2),(3,5),(3,8),
(4,1),(4,4),
(5,2),(5,7),
(6,4),(6,8),(6,9),
(7,5),
(8,3),(8,4),(8,5),(8,6);

-- TESTING

/*

select * from customers where cust_id = 1;

select * from orders where cust_id = 1;

select * from order_items oi 
 inner join orders o on oi.order_id = o.order_id and o.cust_id = 1;

call cascade_delete_customer(1);

*/