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:
Post a Comment