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
Комментариев нет:
Отправить комментарий