27 lines
1.5 KiB
SQL
27 lines
1.5 KiB
SQL
-- 0029_lesson_delete_cascades.sql
|
|||
|
|
-- Make deleting a lesson (directly, or via its chapter) work cleanly.
|
||
|
|
--
|
||
|
|
-- Previously only mcq_questions cascaded; watch/quiz history blocked the delete
|
||
|
|
-- with a 500. Progress/history rows now go away with the lesson, while lessons
|
||
|
|
-- that merely *required* the deleted one are unlinked (never deleted).
|
||
|
|
|
||
|
|
ALTER TABLE watch_sessions DROP CONSTRAINT IF EXISTS watch_sessions_lesson_id_fkey;
|
||
|
|
ALTER TABLE watch_sessions ADD CONSTRAINT watch_sessions_lesson_id_fkey
|
||
|
|
FOREIGN KEY (lesson_id) REFERENCES lessons(id) ON DELETE CASCADE;
|
||
|
|
|
||
|
|
ALTER TABLE watch_heartbeats DROP CONSTRAINT IF EXISTS watch_heartbeats_lesson_id_fkey;
|
||
|
|
ALTER TABLE watch_heartbeats ADD CONSTRAINT watch_heartbeats_lesson_id_fkey
|
||
|
|
FOREIGN KEY (lesson_id) REFERENCES lessons(id) ON DELETE CASCADE;
|
||
|
|
|
||
|
|
ALTER TABLE lesson_progress DROP CONSTRAINT IF EXISTS lesson_progress_lesson_id_fkey;
|
||
|
|
ALTER TABLE lesson_progress ADD CONSTRAINT lesson_progress_lesson_id_fkey
|
||
|
|
FOREIGN KEY (lesson_id) REFERENCES lessons(id) ON DELETE CASCADE;
|
||
|
|
|
||
|
|
ALTER TABLE quiz_attempts DROP CONSTRAINT IF EXISTS quiz_attempts_lesson_id_fkey;
|
||
|
|
ALTER TABLE quiz_attempts ADD CONSTRAINT quiz_attempts_lesson_id_fkey
|
||
|
|
FOREIGN KEY (lesson_id) REFERENCES lessons(id) ON DELETE CASCADE;
|
||
|
|
|
||
|
|
ALTER TABLE lessons DROP CONSTRAINT IF EXISTS lessons_requires_lesson_id_fkey;
|
||
|
|
ALTER TABLE lessons ADD CONSTRAINT lessons_requires_lesson_id_fkey
|
||
|
|
FOREIGN KEY (requires_lesson_id) REFERENCES lessons(id) ON DELETE SET NULL;
|