SQ_DropColumnConstraint

Parameters

Parameter Parameter Type Mode Description
@sTableName varchar(255) IN
@sColumnName varchar(255) IN
@sConstraintType char(1) IN

Definition

Copy


    CREATE  procedure [dbo].[SQ_DropColumnConstraint](@sTableName varchar(255), @sColumnName varchar(255), @sConstraintType char(1) = 'C') AS
BEGIN

DECLARE @SQL_Version nvarchar(100
DECLARE @sConstraintName varchar(255)
DECLARE @sSQL nvarchar(2000)

 IF UPPER(LEFT(@sTableName, 4)) = 'DBO.'
    SET @sTableName = SUBSTRING(@sTableName, 5, LEN(@sTableName) - 4)

SET @SQL_Version = CONVERT(nvarchar,SERVERPROPERTY('productversion'))

IF (LEFT(@SQL_Version,1)= '9') or (LEFT(@SQL_Version,2) = '10') --2005/2008
BEGIN
    IF UPPER(@sConstraintType) = 'D'
    BEGIN
        SELECT @sConstraintName = dc.[Name] 
        FROM sys.Default_constraints dc 
        INNER JOIN sys.[columns] col on dc.object_id = col.Default_Object_ID 
        INNER JOIN sys.tables t on col.object_id = t.Object_ID
        WHERE t.Name = @sTableName and col.[Name] = @sColumnName
    END
    ELSE IF UPPER(@sConstraintType) = 'C'
    BEGIN
        SELECT @sConstraintName = cc.[name] FROM sys.check_constraints cc 
        INNER JOIN sys.Columns col on (cc.parent_object_ID = col.object_ID and cc.parent_column_id = col.Column_ID)
        INNER JOIN sys.Tables t on col.object_id = t.object_id
        WHERE t.[Name] = @sTableName AND col.[Name] = @sColumnName
    END
END
ELSE IF LEFT(@SQL_Version,1)  = '8' --2000
BEGIN
    SELECT @sConstraintName = Constraints.[Name]
      FROM sysobjects AS Constraints
    INNER JOIN sysobjects AS Tables on Constraints.Parent_Obj = Tables.ID
    INNER JOIN syscolumns as Cols on (Cols.ColID=Constraints.Info and Cols.ID=Tables.ID)
    WHERE Tables.XType = 'U'
    and Tables.[Name] = @sTableName
    and Constraints.XType = @sConstraintType
        /* 'C' = check, 'D' = default */
    and Cols.[Name] = @sColumnName
END

IF upper(left(@sTableName, 4)) <> 'DBO.'
   SET @sTableName = 'dbo.' + @sTableName

SET @sSQL = N'ALTER TABLE '  + @sTableName + N' DROP CONSTRAINT ' + @sConstraintName
exec (@sSQL)
END