163c53845a3a600c4003e3902e970c9cc9ea88b4
[BackupPC.git] / sql / 09_backup_parts_trigger.sql
1 alter table backups alter column parts set default 0;
2
3 create or replace function backup_parts_check() returns trigger as '
4 declare
5         b_parts integer;
6         b_counted integer;
7         b_id    integer;
8 begin
9         if (TG_OP=''UPDATE'') then
10                 b_id := old.id;
11                 b_parts := old.parts;
12         elsif (TG_OP = ''INSERT'') then
13                 b_id := new.id;
14                 b_parts := new.parts;
15         end if;
16         b_counted := (select count(*) from backup_parts where backup_id = b_id);
17         -- raise notice ''backup % parts %'', b_id, b_parts;
18         if ( b_parts != b_counted ) then
19                 raise exception ''Update of backup % aborted, requested % parts and there are really % parts'', b_id, b_parts, b_counted;
20         end if;
21         return null;
22 end;
23 ' language plpgsql;
24
25 drop trigger do_backup_parts_check on backups;
26
27 create trigger do_backup_parts_check
28         after insert or update or delete on backups
29         for each row execute procedure backup_parts_check();
30