T-SQL - 关键字 'Trigger' 附近的语法不正确,并且需要外部



我有这个(简化的(t-sql 脚本:

IF NOT EXISTS (
SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20191025090642_DbName_v6'
)
BEGIN
CREATE TRIGGER [dbo].[CREATEID] ON [dbo].[LibNumber]
INSTEAD OF INSERT
AS
BEGIN
SELECT 1
-- Some other stuff...
END 
END;
GO

我得到:

Incorrect syntax near the keyword 'TRIGGER'.

Incorrect syntax near 'Begin'. Expecting EXTERNAL

为什么我错了?看起来它是"如果不存在"语句。我说的对吗?

不幸的是,您无法在 DML 工作流中处理某些 DDL 脚本(创建、更改、删除(。

使用动态 SQL 是处理它的唯一方法。

这是一个示例:

Declare @SQL as nvarchar(max)
Set @SQL = 
N'CREATE TRIGGER [dbo].[CREATEID] ON [dbo].[LibNumber]
INSTEAD OF INSERT
AS
BEGIN
SELECT 1
-- Some other stuff...
END'
IF NOT EXISTS (
SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20191025090642_DbName_v6'
)
BEGIN
Exec (@SQL)
END;
GO

最新更新