我试图确定是否应该创建或更改并触发。我的代码如下。
CoordinatorLayout
我得到的错误是:
这段代码应该如何?
答案 0 :(得分:8)
如果您不想将创建触发器语句作为动态SQL,那么您可以执行以下操作:
IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL
exec sp_executesql N'DROP TRIGGER Sales.bonus_reminder';
GO
CREATE TRIGGER Sales.bonus_reminder
ON Sales.SalesPersonQuotaHistory
WITH ENCRYPTION
AFTER INSERT, UPDATE
AS RAISERROR ('Notify Compensation', 16, 10);
答案 1 :(得分:2)
使用this articular作为我的真理来源。这是简短的答案。
从SQL Server 2016 sp1
开始,您可以使用create or alter
语句来代替其他drop和create方法(到目前为止,我个人最爱)在某些数据库对象(stored procedures
/ {{1} } / functions
/ triggers
)。
所以您的脚本看起来像
views
答案 2 :(得分:1)
使用动态SQL
IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL
EXEC('
ALTER TRIGGER Sales.bonus_reminder
ON Sales.SalesPersonQuotaHistory
AFTER INSERT
AS RAISERROR (''Notify Compensation'', 16, 10)'
);
else
EXEC('
CREATE TRIGGER Sales.bonus_reminder
ON Sales.SalesPersonQuotaHistory
WITH ENCRYPTION
AFTER INSERT, UPDATE
AS RAISERROR (''Notify Compensation'', 16, 10)'
);