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
Monday, September 24, 2012
Identity the Dependency Child tables of a table
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment