I had to create a script for dropping constraints on a table – no problem if the constaint is a named default, but if the default has a system generated name, it gets a bit hairy. Here’s an example of how the defaults get created:
Create table TestTable1 (TestConst datetime default Getdate()) Go
I googled this and found Pinal Dave had a good script to find the constraints in database located here.
Here’s what I came up with for a script to find these constraints:
Declare @TableName varchar(500), @ColumnName varchar(500), @DFName varchar(500), @SchemaName varchar(500), @SQL varchar(2000) --Change these for the table and column you are looking for-- Set @TableName = 'TestTable1' Set @ColumnName = 'TestConst' SELECT OBJECT_NAME(SO.OBJECT_ID) AS NameofConstraint, SCHEMA_NAME(SO.schema_id) AS SchemaName, OBJECT_NAME(SO.parent_object_id) AS TableName, SC.name as ColumnName, SO.type_desc AS ConstraintType FROM sys.objects SO join sys.columns SC on SC.default_object_id = SO.object_id WHERE SO.type_desc LIKE '%CONSTRAINT' and SC.object_id = object_id(@TableName) and SC.name = @ColumnName
Finally, here’s the script to show and drop it:
Declare @TableName varchar(500), @ColumnName varchar(500), @DFName varchar(500), @SchemaName varchar(500), @SQL varchar(2000) --Change these for the table and column you are looking for-- Set @TableName = 'TestTable1' Set @ColumnName = 'TestConst' SELECT OBJECT_NAME(SO.OBJECT_ID) AS NameofConstraint, SCHEMA_NAME(SO.schema_id) AS SchemaName, OBJECT_NAME(SO.parent_object_id) AS TableName, SC.name as ColumnName, SO.type_desc AS ConstraintType FROM sys.objects SO join sys.columns SC on SC.default_object_id = SO.object_id WHERE SO.type_desc LIKE '%CONSTRAINT' and SC.object_id = object_id(@TableName) and SC.name = @ColumnName If exists (Select 1 from sys.objects SO join sys.columns SC on SC.default_object_id = SO.object_id where SC.object_id = object_id(@TableName) and SC.name = @ColumnName) Begin Select @DFName = SO.name, @SchemaName = SCHEMA_NAME(SO.schema_id) from sys.objects SO join sys.columns SC on SC.default_object_id = SO.object_id where SC.object_id = object_id(@TableName) and SC.name = @ColumnName Select @SQL = 'ALTER TABLE ' + @SchemaName + '.' + @TableName + ' DROP CONSTRAINT ' + @DFName EXEC (@SQL) End