12.11.2013

SQL: Drop default constraint

Here is a useful stored procedure for deleting default contraint of some table column withou knowing its name (code is valid for MS SQL):
CREATE PROCEDURE p_DropDefaultContratintForColumn
(
    @TableName nvarchar(255),
    @ColumnName nvarchar(255)
)
AS
DECLARE @sql nvarchar(255)

IF EXISTS(   SELECT d.name 
             FROM sys.all_columns c
              JOIN sys.tables t ON t.object_id = c.object_id
              JOIN sys.schemas s ON s.schema_id = t.schema_id
              JOIN sys.default_constraints d ON c.default_object_id = d.object_id
             WHERE t.name = @TableName
                 AND c.name = @ColumnName
                 AND s.name = SCHEMA_NAME())
BEGIN
    select  @sql = 'ALTER TABLE ' + @TableName + ' DROP CONSTRAINT ' + d.name 
    FROM sys.all_columns c
             JOIN sys.tables t ON t.object_id = c.object_id
             JOIN sys.schemas s ON s.schema_id = t.schema_id
             JOIN sys.default_constraints d ON c.default_object_id = d.object_id
       WHERE t.name = @TableName
             AND c.name = @ColumnName
             AND s.name = SCHEMA_NAME()
    exec    sp_executesql @sql
END

Комментариев нет:

Отправить комментарий