diff --git a/libs/shared/shared/django_apps/legacy_migrations/migrations/0011_convert_owners_trigger_to_after.py b/libs/shared/shared/django_apps/legacy_migrations/migrations/0011_convert_owners_trigger_to_after.py new file mode 100644 index 000000000..482c96f3b --- /dev/null +++ b/libs/shared/shared/django_apps/legacy_migrations/migrations/0011_convert_owners_trigger_to_after.py @@ -0,0 +1,31 @@ +# Generated by Django on 2025-12-09 +# Fix for TriggeredDataChangeViolation: convert BEFORE trigger to AFTER trigger +# BEFORE triggers cannot modify the same table they are triggered on + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("legacy_migrations", "0010_fix_owners_trigger_self_modification"), + ] + + operations = [ + migrations.RunSQL( + """ + -- Drop existing BEFORE triggers + drop trigger if exists owners_before_insert on owners; + drop trigger if exists owners_before_update on owners; + + -- Recreate as AFTER triggers (function name unchanged, behavior is the same) + create trigger owners_after_insert after insert on owners + for each row + execute procedure owners_before_insert_or_update(); + + create trigger owners_after_update after update on owners + for each row + when (new.username is not null and new.username is distinct from old.username) + execute procedure owners_before_insert_or_update(); + """ + ), + ]