Monday, September 24, 2012

Identity the Dependency Child tables of a table


CREATE table #OuptputTable (id int identity(1,1),PrimaryTable Varchar(100),PrimaryKey Varchar(100),ChildTable Varchar(100),ChildDependentkey Varchar(100));

INSERT INTO #OuptputTable

SELECT PrimaryTable, PrimaryKey, ChildTable, ChildDependKey FROM

(

SELECT OBJECT_ID(A.TABLE_NAME) PrimaryTableID, A.TABLE_NAME PrimaryTable, B.COLUMN_NAME PrimaryKey

FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS A,

INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE B

WHERE CONSTRAINT_TYPE = 'PRIMARY KEY' AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME

) P INNER JOIN

(

SELECT SO.name ChildTable, SC.name ChildDependKey FROM syscolumns SC

INNER JOIN sysobjects SO ON (SC.id = SO.id)

WHERE SO.xtype= 'U'

) C ON (P.PrimaryKey = C.ChildDependKey AND P.PrimaryTable <> C.ChildTable)

where P.PrimaryTable='mandalmaster' --/// here give the table

DECLARE @TotalCount int,@increment int;

DECLARE @SQL Varchar(1000),@SQL1 Varchar(1000);

SELECT @TotalCount=COUNT(*) FROM #OuptputTable;

SET @increment=0;

DECLARE @ChildColumn Varchar(100);

DECLARE @ChildTable Varchar(100);

CREATE TABLE #PrimaryTable (Primarytable Varchar(1000));

INSERT INTO #PrimaryTable Values(' mandalmaster ') ---here give the table name

WHILE(@increment<@TotalCount)

BEGIN

SET @increment=@increment+1

SELECT @ChildColumn=ChildTable from #OuptputTable where id=@increment;

SET @ChildTable='ChildTable'+CAST(@increment AS VARCHAR)

SET @SQL='ALTER Table #PrimaryTable ADD'+' ' +@ChildTable+' Varchar(100)';

SET @SQL1= 'Update #PrimaryTable set'+' '+@ChildTable+'='''+@ChildColumn+''' where '+@ChildTable +' IS NULL'

print @sql1

IF NOT EXISTS(select 1 from tempdb.sys.columns where name=@ChildColumn)

BEGIN

EXEC(@SQL)

EXEC(@SQL1)

END

END

select * from #PrimaryTable

drop table #PrimaryTable

drop table #OuptputTable

No comments: