Skip to content

Instantly share code, notes, and snippets.

@wlievens
Created June 20, 2018 19:58
Show Gist options
  • Save wlievens/e875e489a398f856dc96a8b8dc88ec2c to your computer and use it in GitHub Desktop.
Save wlievens/e875e489a398f856dc96a8b8dc88ec2c to your computer and use it in GitHub Desktop.
Automagically rewrite postgresql foreign keys to properly structured names
SELECT
tc.constraint_name,
tc.table_name,
kcu.column_name,
ccu.table_name AS foreign_table_name,
ccu.column_name AS foreign_column_name,
format('ALTER TABLE "%s" RENAME CONSTRAINT %s TO fk_%s_%s;',
tc.table_name, tc.constraint_name, tc.table_name, kcu.column_name)
FROM
information_schema.table_constraints AS tc
JOIN information_schema.key_column_usage AS kcu
ON tc.constraint_name = kcu.constraint_name
JOIN information_schema.constraint_column_usage AS ccu
ON ccu.constraint_name = tc.constraint_name
WHERE constraint_type = 'FOREIGN KEY'
AND tc.constraint_name not like 'fk\_%'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment