diff --git a/database/migration/20260425_study_cascade_delete.sql b/database/migration/20260425_study_cascade_delete.sql new file mode 100644 index 000000000..0c6333602 --- /dev/null +++ b/database/migration/20260425_study_cascade_delete.sql @@ -0,0 +1,24 @@ +-- +-- Add ON DELETE CASCADE to all FK constraints referencing study(id) +-- so that deleting a study automatically removes all dependent records. +-- + +ALTER TABLE public.repo + DROP CONSTRAINT "repo_studyId_fkey", + ADD CONSTRAINT "repo_studyId_fkey" + FOREIGN KEY (study_id) REFERENCES public.study(id) ON DELETE CASCADE; + +ALTER TABLE public.study_fitbit_credentials + DROP CONSTRAINT "study_fitbit_credentials_studyId_fkey", + ADD CONSTRAINT "study_fitbit_credentials_studyId_fkey" + FOREIGN KEY (study_id) REFERENCES public.study(id) ON DELETE CASCADE; + +ALTER TABLE public.study_invite + DROP CONSTRAINT "study_invite_studyId_fkey", + ADD CONSTRAINT "study_invite_studyId_fkey" + FOREIGN KEY (study_id) REFERENCES public.study(id) ON DELETE CASCADE; + +ALTER TABLE public.study_subject + DROP CONSTRAINT "study_subject_studyId_fkey", + ADD CONSTRAINT "study_subject_studyId_fkey" + FOREIGN KEY (study_id) REFERENCES public.study(id) ON DELETE CASCADE; diff --git a/database/studyu-schema.sql b/database/studyu-schema.sql index 3eb887cae..90612a30b 100644 --- a/database/studyu-schema.sql +++ b/database/studyu-schema.sql @@ -640,7 +640,7 @@ ALTER TABLE ONLY "public"."subject_progress" ALTER TABLE ONLY "public"."repo" - ADD CONSTRAINT "repo_studyId_fkey" FOREIGN KEY ("study_id") REFERENCES "public"."study"("id"); + ADD CONSTRAINT "repo_studyId_fkey" FOREIGN KEY ("study_id") REFERENCES "public"."study"("id") ON DELETE CASCADE; @@ -650,12 +650,12 @@ ALTER TABLE ONLY "public"."repo" ALTER TABLE ONLY "public"."study_fitbit_credentials" - ADD CONSTRAINT "study_fitbit_credentials_studyId_fkey" FOREIGN KEY ("study_id") REFERENCES "public"."study"("id"); + ADD CONSTRAINT "study_fitbit_credentials_studyId_fkey" FOREIGN KEY ("study_id") REFERENCES "public"."study"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."study_invite" - ADD CONSTRAINT "study_invite_studyId_fkey" FOREIGN KEY ("study_id") REFERENCES "public"."study"("id"); + ADD CONSTRAINT "study_invite_studyId_fkey" FOREIGN KEY ("study_id") REFERENCES "public"."study"("id") ON DELETE CASCADE; @@ -665,7 +665,7 @@ ALTER TABLE ONLY "public"."study_subject" ALTER TABLE ONLY "public"."study_subject" - ADD CONSTRAINT "study_subject_studyId_fkey" FOREIGN KEY ("study_id") REFERENCES "public"."study"("id"); + ADD CONSTRAINT "study_subject_studyId_fkey" FOREIGN KEY ("study_id") REFERENCES "public"."study"("id") ON DELETE CASCADE;