115 lines
3.6 KiB
SQL
115 lines
3.6 KiB
SQL
drop trigger if exists `trig_create_user_stat`;
|
|
DELIMITER ##
|
|
create trigger `trig_create_user_stat`
|
|
after insert on user
|
|
for each row begin
|
|
insert into user_stat (`user_id`, `user_limit`) values(NEW.user_id, NEW.user_limit);
|
|
end ##
|
|
DELIMITER ;
|
|
|
|
drop trigger if exists `trig_delete_user_stat`;
|
|
DELIMITER ##
|
|
create trigger `trig_delete_user_stat`
|
|
after delete on user
|
|
for each row begin
|
|
delete from user_stat where user_id=OLD.user_id;
|
|
end ##
|
|
DELIMITER ;
|
|
|
|
drop trigger if exists `trig_update_stat_book_ins`;
|
|
DELIMITER ##
|
|
create trigger `trig_update_stat_book_ins`
|
|
after insert on book
|
|
for each row begin
|
|
update user_stat set user_bookcount=user_bookcount+1 where user_stat.user_id=NEW.user_id;
|
|
end ##
|
|
DELIMITER ;
|
|
|
|
drop trigger if exists `trig_update_stat_book_del`;
|
|
DELIMITER ##
|
|
create trigger `trig_update_stat_book_del`
|
|
after delete on book
|
|
for each row begin
|
|
update user_stat set user_bookcount=user_bookcount-1 where user_stat.user_id=OLD.user_id;
|
|
end ##
|
|
DELIMITER ;
|
|
|
|
drop trigger if exists `trig_update_stat_doc_ins`;
|
|
DELIMITER ##
|
|
create trigger `trig_update_stat_doc_ins`
|
|
after insert on document
|
|
for each row begin
|
|
update user_stat set user_doccount=user_doccount+1 where user_stat.user_id=NEW.user_id;
|
|
update user_stat set user_usedspace=user_usedspace+NEW.doc_size where user_stat.user_id=NEW.user_id;
|
|
end ##
|
|
DELIMITER ;
|
|
|
|
drop trigger if exists `trig_update_stat_doc_del`;
|
|
DELIMITER ##
|
|
create trigger `trig_update_stat_doc_del`
|
|
after delete on document
|
|
for each row begin
|
|
update user_stat set user_doccount=user_doccount-1 where user_stat.user_id=OLD.user_id;
|
|
update user_stat set user_usedspace=user_usedspace-OLD.doc_size where user_stat.user_id=OLD.user_id;
|
|
end ##
|
|
DELIMITER ;
|
|
|
|
drop trigger if exists `trig_update_stat_note_ins`;
|
|
DELIMITER ##
|
|
create trigger `trig_update_stat_note_ins`
|
|
after insert on note
|
|
for each row begin
|
|
update user_stat set user_notecount=user_notecount+1 where user_stat.user_id=NEW.user_id;
|
|
end ##
|
|
DELIMITER ;
|
|
|
|
drop trigger if exists `trig_update_stat_note_del`;
|
|
DELIMITER ##
|
|
create trigger `trig_update_stat_note_del`
|
|
after delete on note
|
|
for each row begin
|
|
update user_stat set user_notecount=user_notecount-1 where user_stat.user_id=OLD.user_id;
|
|
end ##
|
|
DELIMITER ;
|
|
|
|
drop procedure if exists `clean_up_type_author`;
|
|
DELIMITER ##
|
|
|
|
create procedure `clean_up_type_author`(in uid_in int) begin
|
|
declare done boolean default false;
|
|
declare v_bookid int;
|
|
declare cur cursor for select distinct book_id from book where book.user_id = uid_in;
|
|
declare continue handler for not found set done=true;
|
|
|
|
open cur;
|
|
mainloop: loop
|
|
fetch cur into v_bookid;
|
|
if done then
|
|
leave mainloop;
|
|
end if;
|
|
delete from typetable where type_id in (select type_id from book_type where book_id=v_bookid);
|
|
delete from book_type where book_id = v_bookid;
|
|
end loop;
|
|
close cur;
|
|
end ##
|
|
|
|
DELIMITER ;
|
|
|
|
drop procedure if exists `add_new_book_type`;
|
|
DELIMITER ##
|
|
create procedure `add_new_book_type`(in bookid_in int, in typename_in varchar(200)) begin
|
|
declare isnewtype int default 0;
|
|
declare isduplicated int default 0;
|
|
declare v_typeid int;
|
|
select count(type_name) into isnewtype from typetable where type_name=typename_in;
|
|
if isnewtype=0 then
|
|
insert into typetable (`type_name`) values (typename_in);
|
|
end if;
|
|
select type_id into v_typeid from typetable where type_name = typename_in;
|
|
select count(book_id) into isduplicated from book_type where type_id=v_typeid and book_id=bookid_in;
|
|
if isduplicated=0 then
|
|
insert into book_type (`type_id`,`book_id`) values (v_typeid, bookid_in);
|
|
end if;
|
|
end ##
|
|
DELIMITER ;
|