有一个被很多地方引用导致没办法修改:Cannot ALTER 'dbo.F_GetLocalDate' because it is being referenced by object 'DF_mms_member_AddDate'.
网上没找到合适方法,发挥自己动手丰衣足食的传统
首先理一下思路:
1,先把引用到方法的地方修改掉
2,修改方法
3,引用到方法的地方修改回来
嗯,说干就干
-------------------------------------------华丽的分割线--------------------------------------------------
-- 欲查詢之schema, function
declare @pSchemaName varchar(30) = '', @pFunctionName varchar(30) = '' select LiteralCheckOrDefault, s.Name as SchemaName, t.Name as TableName, cn.Name as ConstraintName, cl.Name as ColumnName, Definition into #cnTemp from ( select 'check' as LiteralCheckOrDefault, Name, Definition, parent_object_id, parent_column_id from sys.check_constraints union all select 'default' as LiteralCheckOrDefault, Name, Definition, parent_object_id, parent_column_id from sys.default_constraints ) cn inner join sys.columns cl on cn.parent_object_id = cl.object_id AND cn.parent_column_id = cl.column_id inner join sys.tables t on t.object_id = cl.object_id inner join sys.schemas S on t.schema_id = s.schema_id where definition like '%'+@pSchemaName+'%'+@pFunctionName+'%' order by SchemaName, TableName, ColumnName, ConstraintName
-- 建立刪除語法
select 'alter table [' + SchemaName + '].[' + TableName + '] ' +
'drop constraint [' + ConstraintName + '];' as Drop_Command
,SchemaName
,TableName
,ColumnName
,ConstraintName
,Definition
from #cnTemp
order by SchemaName ,TableName ,ColumnName
-- 執行function修改
-- 將約束條件建回
select 'alter table [' + SchemaName + '].[' + TableName + '] ' +
'add constraint [' + ConstraintName + '] ' + LiteralCheckOrDefault + ' ' +
Definition +
iif(LiteralCheckOrDefault = 'default', ' for [' + ColumnName+ ']', '') + ';' as ADD_Command
from #cnTemp
order by SchemaName ,TableName ,ColumnName
drop table #cnTemp
------------------------------------F_GetLocalDate------------------------------------------------------
ALTER FUNCTION [dbo].[F_GetLocalDate]
(
@TimezoneDiffInHour TINYINT = 8
)
RETURNS DATETIME
AS
BEGIN
declare @result datetime
set @result=''
select @result=DATEADD(Hh, @TimezoneDiffInHour , GETUTCDATE())
RETURN @result
END
欢迎转载,请注明来自白菜卖故事>>本文地址:http://www.bcmgs.com/786
0 还没人赞过...