Skip to content

Instantly share code, notes, and snippets.

@Artiesy
Created June 12, 2023 18:49
Show Gist options
  • Save Artiesy/ea00ea2ae05c7ef358f56ad6821eb76b to your computer and use it in GitHub Desktop.
Save Artiesy/ea00ea2ae05c7ef358f56ad6821eb76b to your computer and use it in GitHub Desktop.
Replace all foreign key actions in table to CASCADE
DO $$DECLARE
r RECORD;
BEGIN
FOR r IN (
SELECT
tc.table_schema,
tc.constraint_name,
tc.table_name,
kcu.column_name,
ccu.table_schema AS foreign_table_schema,
ccu.table_name AS foreign_table_name,
ccu.column_name AS foreign_column_name
FROM
information_schema.table_constraints AS tc
JOIN information_schema.key_column_usage AS kcu
ON tc.constraint_name = kcu.constraint_name
AND tc.table_schema = kcu.table_schema
JOIN information_schema.constraint_column_usage AS ccu
ON ccu.constraint_name = tc.constraint_name
AND ccu.table_schema = tc.table_schema
WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name='kl_user_referral'
) LOOP
EXECUTE 'ALTER TABLE ' || r.table_name || ' DROP CONSTRAINT ' || r.constraint_name;
EXECUTE
'ALTER TABLE ' || r.table_name || ' ADD CONSTRAINT ' || r.constraint_name ||
' FOREIGN KEY (' || r.column_name || ') REFERENCES ' || r.foreign_table_name ||
' (' || r.foreign_column_name || ' ) ON DELETE CASCADE ON UPDATE CASCADE';
END LOOP;
END$$;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment