Technical Article

Default Constraints with PRINT or DROP

,

To Retreive List of Default Constraints from current database with PRINT or DROP

/****** Object:  StoredProcedure [dbo].[usp_getDefaultConstraints]    Script Date: 04/20/2007 23:06:04 ******/IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[usp_getDefaultConstraints]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[usp_getDefaultConstraints]
GO
/*
Purpose : To Retreive List of Default Constraints from current database
Created  Date: 04/20/2007
Created  by: Satyanarayana Bommidi
Parameters: Optional Parameters
Input: @TablesName = {Table Name if Required}, @ColumnName  = {Column Name if Required} 
  and @isDrop {0 is for SELECT and 1 for DROP}
EXEC: EXEC usp_getDefaultConstraints @TablesName = 'EZCAP_CONFIG', @ColumnName = 'VLD_CONSPROV2', @isDrop = 0
*/CREATE PROCEDURE usp_getDefaultConstraints (@TablesName VARCHAR(120) = '', @ColumnName VARCHAR(120) = '', @isDrop BIT = 0)
AS
BEGIN
SELECT IDENTITY(INT, 1, 1) as Row_ID, CONVERT(VARCHAR(50), schema_name(t.schema_id)) as Schema_Name, CONVERT(VARCHAR(250), t.Name) as Table_Name, CONVERT(VARCHAR(120), c.Name) as Column_Name, CONVERT(VARCHAR(120), d.Name) as Default_Constraints_Name, CONVERT(VARCHAR(250), d.definition) as Default_Value
INTO #Defaults FROM sys.tables t
LEFT JOIN sys.default_constraints d ON t.object_id = d.parent_object_id
LEFT JOIN sys.columns c ON t.object_id = c.object_id AND d.parent_column_id = c.column_id
WHERE (@TablesName = '' OR CONVERT(VARCHAR(250), t.Name) = @TablesName) AND (@ColumnName = '' OR CONVERT(VARCHAR(250), c.Name) = @ColumnName)

DECLARE @RowID INT, @SQL VARCHAR(1000)
SELECT @RowID = 1, @SQL = ''
IF @isDrop = 1
BEGIN
SELECT @RowID = MIN(Row_ID) FROM #Defaults
WHILE @RowID <= (SELECT MAX(Row_ID) FROM #Defaults)
BEGIN
SELECT @SQL = 'ALTER TABLE ['+Schema_Name+'].['+Table_Name+'] DROP CONSTRAINT ['+Default_Constraints_Name+'] ' FROM #Defaults WHERE Row_ID = @RowID AND ISNULL(Schema_Name, '') <> '' AND ISNULL(Table_Name, '') <> '' AND ISNULL(Default_Constraints_Name, '') <> ''
PRINT @SQL 
EXEC(@SQL)
SELECT @RowID = MIN(Row_ID) FROM #Defaults WHERE Row_ID > @RowID
END
END
ELSE SELECT * FROM #Defaults
DROP TABLE #Defaults
END
GO

Rate

4 (1)

You rated this post out of 5. Change rating

Share

Share

Rate

4 (1)

You rated this post out of 5. Change rating