Skip to content

Commit

Permalink
Make all foreign key constraints deferrable
Browse files Browse the repository at this point in the history
This will be required later, when the load routine will temporarily delete
referenced rows to insert new versions of them.
  • Loading branch information
samv committed Jan 30, 2008
1 parent 7c1a6d4 commit 8ba0cfd
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions constraints.sql
Expand Up @@ -33,13 +33,13 @@ alter table change_parents add constraint source_file_id_valid


-- checking all change number references are valid -- checking all change number references are valid
alter table rev add constraint rev_change_valid alter table rev add constraint rev_change_valid
foreign key (change) references change; foreign key (change) references change deferrable;


alter table revcx add constraint revcx_change_valid alter table revcx add constraint revcx_change_valid
foreign key (change) references change; foreign key (change) references change deferrable;


alter table change_branches add constraint change_branches_change_valid alter table change_branches add constraint change_branches_change_valid
foreign key (change) references change; foreign key (change) references change deferrable;


-- p4users primary key -- p4users primary key
alter table p4user alter table p4user
Expand All @@ -54,27 +54,27 @@ select * from change_desc where not exists


-- checking all depotpaths + revnums are valid -- checking all depotpaths + revnums are valid
alter table revcx add constraint revcx_depot_rev_valid alter table revcx add constraint revcx_depot_rev_valid
foreign key (depotpath, revision) references rev; foreign key (depotpath, revision) references rev deferrable;
alter table rev_marks add constraint rev_marks_depot_rev_valid alter table rev_marks add constraint rev_marks_depot_rev_valid
foreign key (depotpath,revision) references rev; foreign key (depotpath,revision) references rev deferrable;


-- set up safety constraints for later additions -- set up safety constraints for later additions
alter table change_marks add constraint change_marks_branch_valid alter table change_marks add constraint change_marks_branch_valid
foreign key (branchpath,change) references change_branches; foreign key (branchpath,change) references change_branches deferrable;


create unique index change_parents_unique on change_parents create unique index change_parents_unique on change_parents
(branchpath,change,parent_branchpath,parent_change,ref); (branchpath,change,parent_branchpath,parent_change,ref);
alter table change_parents add constraint change_branchpath_valid alter table change_parents add constraint change_branchpath_valid
foreign key (branchpath,change) foreign key (branchpath,change)
references change_branches; references change_branches deferrable;
alter table change_parents add constraint change_parents_valid alter table change_parents add constraint change_parents_valid
foreign key (parent_branchpath, parent_change) foreign key (parent_branchpath, parent_change)
references change_branches(branchpath, change); references change_branches(branchpath, change) deferrable;
create unique index change_parents_sanity create unique index change_parents_sanity
on change_parents(change, branchpath, parent_branchpath, on change_parents(change, branchpath, parent_branchpath,
parent_change, manual); parent_change, manual);


-- create indexes -- create indexes:
create index integed_change_idx on integed (change); create index integed_change_idx on integed (change);
create index integed_subject_idx on integed (subject, subject_maxrev); create index integed_subject_idx on integed (subject, subject_maxrev);
create index integed_object_idx on integed (object, object_maxrev); create index integed_object_idx on integed (object, object_maxrev);
Expand All @@ -99,7 +99,7 @@ group by


-- checking all change number references are valid -- checking all change number references are valid
alter table change add constraint change_who_user_valid alter table change add constraint change_who_user_valid
foreign key (who_user) references p4user; foreign key (who_user) references p4user deferrable;


-- the 'integed' table is denormalised, with rows normally appearing -- the 'integed' table is denormalised, with rows normally appearing
-- in pairs. However, these rows were missing their partners: -- in pairs. However, these rows were missing their partners:
Expand Down

0 comments on commit 8ba0cfd

Please sign in to comment.