FIX(BE): update foreign key constraints to use ON DELETE NO ACTION for expense and marketing tables

This commit is contained in:
aguhh18
2026-01-06 12:43:52 +07:00
parent d8fb427734
commit a08466a28e
4 changed files with 86 additions and 0 deletions
@@ -0,0 +1,15 @@
-- Revert back to NO ACTION (RESTRICT behavior)
ALTER TABLE expense_nonstocks DROP CONSTRAINT IF EXISTS fk_expense_nonstocks_expense_id;
ALTER TABLE expense_nonstocks
ADD CONSTRAINT fk_expense_nonstocks_expense_id
FOREIGN KEY (expense_id) REFERENCES expenses(id)
ON DELETE NO ACTION;
-- Revert expense_realizations FK
ALTER TABLE expense_realizations DROP CONSTRAINT IF EXISTS fk_expense_realizations_nonstock_id;
ALTER TABLE expense_realizations
ADD CONSTRAINT fk_expense_realizations_nonstock_id
FOREIGN KEY (expense_nonstock_id) REFERENCES expense_nonstocks(id)
ON DELETE NO ACTION;
@@ -0,0 +1,16 @@
-- Drop existing FK constraints
ALTER TABLE expense_nonstocks DROP CONSTRAINT IF EXISTS fk_expense_nonstocks_expense_id;
-- Recreate with ON DELETE CASCADE
ALTER TABLE expense_nonstocks
ADD CONSTRAINT fk_expense_nonstocks_expense_id
FOREIGN KEY (expense_id) REFERENCES expenses(id)
ON DELETE CASCADE;
-- Drop and recreate expense_realizations FK
ALTER TABLE expense_realizations DROP CONSTRAINT IF EXISTS fk_expense_realizations_nonstock_id;
ALTER TABLE expense_realizations
ADD CONSTRAINT fk_expense_realizations_nonstock_id
FOREIGN KEY (expense_nonstock_id) REFERENCES expense_nonstocks(id)
ON DELETE CASCADE;
@@ -0,0 +1,20 @@
-- Revert back to NO ACTION (for rollback safety)
DO $$
BEGIN
ALTER TABLE marketing_products DROP CONSTRAINT IF EXISTS fk_marketing_products_marketing_id;
ALTER TABLE marketing_products
ADD CONSTRAINT fk_marketing_products_marketing_id
FOREIGN KEY (marketing_id) REFERENCES marketings(id)
ON DELETE NO ACTION;
END $$;
DO $$
BEGIN
ALTER TABLE marketing_delivery_products DROP CONSTRAINT IF EXISTS fk_marketing_delivery_products_marketing_product_id;
ALTER TABLE marketing_delivery_products
ADD CONSTRAINT fk_marketing_delivery_products_marketing_product_id
FOREIGN KEY (marketing_product_id) REFERENCES marketing_products(id)
ON DELETE NO ACTION;
END $$;
@@ -0,0 +1,35 @@
-- Ensure marketing_products FK is CASCADE (it should already be, but let's make sure)
DO $$
BEGIN
-- Drop existing FK if exists
IF EXISTS (
SELECT 1 FROM pg_constraint
WHERE conname = 'fk_marketing_products_marketing_id'
) THEN
ALTER TABLE marketing_products DROP CONSTRAINT fk_marketing_products_marketing_id;
END IF;
-- Recreate with ON DELETE CASCADE
ALTER TABLE marketing_products
ADD CONSTRAINT fk_marketing_products_marketing_id
FOREIGN KEY (marketing_id) REFERENCES marketings(id)
ON DELETE CASCADE;
END $$;
-- Ensure marketing_delivery_products FK is CASCADE
DO $$
BEGIN
-- Drop existing FK if exists
IF EXISTS (
SELECT 1 FROM pg_constraint
WHERE conname = 'fk_marketing_delivery_products_marketing_product_id'
) THEN
ALTER TABLE marketing_delivery_products DROP CONSTRAINT fk_marketing_delivery_products_marketing_product_id;
END IF;
-- Recreate with ON DELETE CASCADE
ALTER TABLE marketing_delivery_products
ADD CONSTRAINT fk_marketing_delivery_products_marketing_product_id
FOREIGN KEY (marketing_product_id) REFERENCES marketing_products(id)
ON DELETE CASCADE;
END $$;