Skip to content

Instantly share code, notes, and snippets.

@ax4413
ax4413 / gist:fb3df8418db2262e1523
Created May 22, 2014 14:36
DYNAMIC DDL FOREIGN KEY DEFFINITIONS FROM SYSTEM VIEWS
SELECT DISTINCT 'ALTER TABLE ' + QUOTENAME(SCHEMA_NAME(pt.schema_id) )+ '.' + QUOTENAME(pt.name)
+ CASE FK.is_disabled WHEN 1 THEN ' WITH NOCHECK ' ELSE ' WITH CHECK ' END
+ 'ADD CONSTRAINT ' + QUOTENAME(fk.name) + ' FOREIGN KEY (' + ptc.ColumnList + ') '
+ 'REFERENCES ' + QUOTENAME(SCHEMA_NAME(rt.Schema_id)) + '.' + QUOTENAME(rt.name)
+ ' (' + rtc.ColumnList + ')'
FROM sys.foreign_keys fk
INNER JOIN sys.foreign_key_columns fkc ON fkc.constraint_object_id = fk.object_id
INNER JOIN sys.tables pt ON pt.object_id = fk.parent_object_id
INNER JOIN sys.tables rt ON rt.object_id = fkc.referenced_object_id
CROSS APPLY (SELECT DISTINCT STUFF((SELECT ', ' + QUOTENAME(c.name)