我有这个(简化的(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