我在sqlite中使用语句drop trigger if exist TRIGGER
但sql server不喜欢if语句。 (我猜存在是令人讨厌的词)。我在创建触发器语句旁边执行此操作,因为我想删除具有相同名称的旧触发器,以便我可以用这个新触发器替换它。
我如何在SQL Server中执行此操作?
答案 0 :(得分:4)
在SQL Server Management Studio中(我认为在查询分析器中)右键单击资源管理器中的触发器,然后选择Script-as选项,在剪贴板中选择“Drop Trigger”,SSMS将创建T-SQL您可以删除该触发器的语法。
很抱歉,我没有给你T-SQL,你可以复制和粘贴,但这样你下次就知道该怎么做了。
答案 1 :(得分:2)
您可以检查是否存在特定的触发器。
IF EXISTS
(
select name
from sys.objects
where type='TR' and name ='Trigger Name'
)
BEGIN
--Add your Trigger create code here
END
答案 2 :(得分:2)
我发现这是一个更紧凑的SQL Server,相当于MySQL的DROP TRIGGER IF EXISTS
语法:
IF OBJECT_ID('XXXX', 'TR') IS NOT NULL
DROP TRIGGER XXXX
答案 3 :(得分:0)
我会使用类似的东西:
IF objectproperty(object_id('dbo.xxx'), 'isTrigger') = 1
DROP PROCEDURE dbo.xxx
GO
CREATE TRIGGER dbo.xxx [etc]
用您的触发器名称替换xxx(如果需要,使用相关模式替换dbo)。
或者,您可以使用
ALTER TRIGGER dbo.xxx [etc]
答案 4 :(得分:0)
自 2016 版起,此语法也是 supported by Microsoft SQL Server:
DROP TRIGGER IF EXISTS trigger_name