例如:
--1、增量脚本
--新增一字段RefundBy 并设置了默认值
ALTER TABLE [dbo].[GW_WRestraurant_Order_Refund]
ADD RefundBy nvarchar(20) NOT NULL DEFAULT ''
--2、回滚脚本
--回滚脚本如下:
--sp_helpconstraint [GW_WRestraurant_Order_Refund] --须手工查出来对应的约束值后再drop掉
ALTER TABLE [dbo].[GW_WRestraurant_Order_Refund] DROP CONSTRAINT DF__GW_WRestr__Audit__07970BFE
Go
ALTER TABLE [dbo].[GW_WRestraurant_Order_Refund]
DROP COLUMN RefundBy
问题:回滚脚本如何写成通用的啊?因为执行回滚脚本后,再执行增量脚本后约束的名字变化了
sp_helptext sp_helpconstraint
分析一这个这个过程,有相关的表
declare @table nvarchar(50)='tbxxx',@column nvarchar(50)='colunname'
select 'alter table '+@table +' drop constraint ' +name+';
alter table '+@table +' drop column '+@column
from sys.default_constraints
where parent_object_id=object_id(@table)
and parent_column_id=(select column_id
from sys.columns
where name=@column
and object_id=object_id(@table)
);
--这个语句生成的sql语句,就是你要的.