30.06.2013 Views

SQL Server Team-based Development - Red Gate Software

SQL Server Team-based Development - Red Gate Software

SQL Server Team-based Development - Red Gate Software

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

291<br />

Chapter 9: Searching DDL and Build Scripts<br />

LEFT OUTER JOIN<br />

(SELECT 'REFERENCES '<br />

+COALESCE(SCHEMA_NAME(fkc.referenced_object_id)+'.','')<br />

+OBJECT_NAME(fkc.referenced_object_id)+'('+c.name+') '--+<br />

+ CASE WHEN delete_referential_action_desc 'NO_ACTION'<br />

THEN 'ON DELETE '<br />

+ REPLACE(delete_referential_action_desc,'_',' ')<br />

COLLATE database_default<br />

ELSE '' END<br />

+ CASE WHEN update_referential_action_desc 'NO_ACTION'<br />

THEN 'ON UPDATE '<br />

+ REPLACE(update_referential_action_desc,'_',' ')<br />

COLLATE database_default<br />

ELSE '' END<br />

AS reference, parent_column_id<br />

FROM sys.foreign_key_columns fkc<br />

INNER JOIN sys.foreign_keys fk ON<br />

constraint_object_id=fk.object_ID<br />

INNER JOIN sys.columns c<br />

ON c.object_ID = fkc.referenced_object_id<br />

AND c.column_ID = referenced_column_id<br />

WHERE fk.parent_object_ID = OBJECT_ID(@identifier)<br />

AND constraint_object_ID NOT IN – -include only<br />

– -single-column keys<br />

(SELECT 1 FROM sys.foreign_key_columns multicolumn<br />

WHERE multicolumn.parent_object_id<br />

=fk.parent_object_ID<br />

GROUP BY constraint_object_id<br />

HAVING COUNT(*)>1)) column_references<br />

ON column_references.parent_column_ID=c.column_ID<br />

WHERE object_id = OBJECT_ID(@identifier)<br />

ORDER BY c.column_ID<br />

FOR XML PATH(''))--join up all the rows!<br />

SELECT @Script=LEFT(@Script,LEN(@Script)-1)<br />

– -take out the trailing line feed<br />

SELECT TOP 1 @PrimaryKeyBuild= '<br />

CONSTRAINT ['+i.name+'] PRIMARY KEY '<br />

+CASE WHEN type_desc='CLUSTERED' THEN 'CLUSTERED'<br />

ELSE '' END+'<br />

(<br />

' + COALESCE(SUBSTRING((SELECT ','+COL_NAME(ic.object_id,ic.column_id)<br />

FROM sys.index_columns AS ic<br />

WHERE ic.index_ID=i.index_ID AND ic.object_id=i.object_id<br />

ORDER BY key_ordinal

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!