如何在SQL Server中创建触发器?

时间:2010-05-19 14:04:43

标签: sql-server triggers

我在sqlite中使用语句drop trigger if exist TRIGGER但sql server不喜欢if语句。 (我猜存在是令人讨厌的词)。我在创建触发器语句旁边执行此操作,因为我想删除具有相同名称的旧触发器,以便我可以用这个新触发器替换它。

我如何在SQL Server中执行此操作?

5 个答案:

答案 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