业务背景:
数据库模型设计时命名错误,点击了保存,重新换了正确的字段后错误的数据字段还存储数据库,且删除字段前要先查询约束并删除约束后才能删除字段成功。每一次错误都是一次重复工作量。
解决方案:
设计一个存储过程,传入表名和字段名,先查询该字段约束,存在先删除,然后再删除字段。
存储过程:
--创建存储过程 CREATE PROCEDURE XHWT_PR_BD_DROPCOLUMN @tableName nvarchar(100), @columnName nvarchar(100) AS --declare @tableName nvarchar(100);--表名 --declare @columnName nvarchar(100);--列名 declare @cnt nvarchar(100); declare @sqlcmd nvarchar(1024); --set @tableName='T_SAL_ORDER' --set @columnName='F_TEXT' --删除约束 select @cnt= b.name from sysobjects b join syscolumns a on b.id = a.cdefault where a.id = object_id(@tableName) and a.name = @columnName set @sqlcmd = 'ALTER TABLE '+ @tableName +' DROP constraint ' + @cnt; exec sp_executesql @sqlcmd --删除字段 SET @sqlcmd='ALTER TABLE '+@tableName+' DROP COLUMN ' +@columnName; exec sp_executesql @sqlcmd go
测试:
EXEC XHWT_PR_BD_DROPCOLUMN 'T_SAL_ORDER','F_TEXT' EXEC XHWT_PR_BD_DROPCOLUMN 'T_SAL_ORDER','F_DECIMAL'