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