Created
September 15, 2015 13:13
-
-
Save ststeiger/8b54f91f7d7bab801629 to your computer and use it in GitHub Desktop.
Generate data for self-referencing table
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| DECLARE @bla nvarchar(128) | |
| SET @bla = N'T_FMS_Reports' | |
| -- SET @bla = N'T_Users' | |
| SELECT | |
| FK_TABLE_NAME, | |
| FK_COLUMN_NAME -- RE_RE_UID | |
| ,REFERENCED_COLUMN_NAME, -- RE_UID | |
| -- 'SELECT * FROM ' + REPLACE(QUOTENAME(@bla), '''', '''''') AS cmd2, | |
| ' | |
| ;WITH CTE AS | |
| ( | |
| SELECT * | |
| FROM ' + REPLACE(QUOTENAME(FK_TABLE_NAME), '''', '''''') + ' | |
| WHERE ' + REPLACE(QUOTENAME(FK_COLUMN_NAME), '''', '''''') + ' IS NULL | |
| -- AND ' + REPLACE(QUOTENAME(FK_TABLE_NAME), '''', '''''') + '.RE_Status <> 99 | |
| UNION ALL | |
| SELECT ' + REPLACE(QUOTENAME(FK_TABLE_NAME), '''', '''''') + '.* FROM CTE | |
| INNER JOIN ' + REPLACE(QUOTENAME(FK_TABLE_NAME), '''', '''''') + ' | |
| ON ' + REPLACE(QUOTENAME(FK_TABLE_NAME), '''', '''''') + '.' + REPLACE(QUOTENAME(FK_COLUMN_NAME), '''', '''''') + ' = CTE.' + REPLACE(QUOTENAME(REFERENCED_COLUMN_NAME), '''', '''''') + ' | |
| -- AND ' + REPLACE(QUOTENAME(FK_TABLE_NAME), '''', '''''') + '.RE_Status <> 99 | |
| ) | |
| SELECT * FROM CTE | |
| OPTION ( MAXRECURSION 0 ) | |
| ' AS cmd | |
| FROM V_DELDATA_ForeignKeyRelations | |
| WHERE (1=1) | |
| AND FK_TABLE_SCHEMA = 'dbo' | |
| AND FK_TABLE_NAME = @bla | |
| AND FK_TABLE_NAME = REFERENCED_TABLE_NAME | |
| AND FK_TABLE_SCHEMA = REFERENCED_TABLE_SCHEMA | |
| /* | |
| ;WITH CTE AS | |
| ( | |
| SELECT * | |
| FROM T_FMS_Reports | |
| WHERE RE_RE_UID IS NULL | |
| AND RE_Status <> 99 | |
| UNION ALL | |
| SELECT T_FMS_Reports.* FROM CTE | |
| INNER JOIN T_FMS_Reports | |
| ON T_FMS_Reports.RE_RE_UID = CTE.RE_UID | |
| AND T_FMS_Reports.RE_Status <> 99 | |
| ) | |
| SELECT * FROM CTE | |
| */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment