From 32385bfd16fd588e13f5bdebae1c08fd729c5815 Mon Sep 17 00:00:00 2001 From: adam Date: Sat, 13 Feb 2021 18:39:26 +0200 Subject: unlink recurses --- sql/fileshare.sql | 49 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 16 deletions(-) (limited to 'sql') diff --git a/sql/fileshare.sql b/sql/fileshare.sql index 7dae888..238d7b4 100644 --- a/sql/fileshare.sql +++ b/sql/fileshare.sql @@ -4,10 +4,15 @@ drop table if exists users; drop table if exists node_links; drop table if exists trash; drop table if exists super_trash; +drop table if exists nodes; + + + drop trigger if exists delete_on_zero_links; drop trigger if exists delete_links; drop trigger if exists del_node; -drop table if exists nodes; +drop trigger if exists supper_del_node; + @@ -52,13 +57,11 @@ create table node_links ( ); create table trash ( - node_id int not null, - foreign key (node_id) references nodes(node_id) + node_id int not null ); create table super_trash ( - node_id int not null, - foreign key (node_id) references nodes(node_id) - ); + node_id int not null +); create trigger delete_on_zero_links @@ -68,17 +71,31 @@ create trigger delete_on_zero_links insert into trash select nodes.node_id from nodes - where nodes.node_id not in (select node_id from node_links) and nodes.node_id=old.node_id ; + where nodes.node_id not in (select node_id from node_links) and + (nodes.node_id=old.node_id ); -create trigger delete_links - after delete - on nodes - for each row - delete from node_links where directory_id=old.node_id; -/* create trigger del_node - after insert + after delete on trash for each row - delete from nodes where node_id=new.node_id; - */ + insert into super_trash(node_id) + select node_id + from nodes + where nodes.node_id=old.node_id; + + +create trigger supper_del_node + after delete + on super_trash + for each row + insert into trash + select node_id + from nodes + where nodes.node_id=old.node_id; + +create trigger delete_links + before delete + on super_trash + for each row + delete from node_links + where directory_id=old.node_id; -- cgit v1.2.3