C#Migrations触发更新

问题描述 投票:1回答:1

我为部分类中的触发器创建了现有的数据库迁移。现在我需要更新这个触发器。退出代码

 string triggerBodyIns = TriggerBodyIns;
 string triggerBodyUpd = TriggerBodyUpd;
 string triggerBodyDel = TriggerBodyDel;

 this.CreateTrigger(SchemaName, tableName, "_INS", TriggerType.Insert, 
 false,triggerBodyIns.Replace("XXXXXX", tableName));

 this.CreateTrigger(SchemaName, tableName, "_UPD", TriggerType.Update, 
 false,triggerBodyUpd.Replace("XXXXXX", tableName));
 this.CreateTrigger(SchemaName, tableName, "_DEL", TriggerType.Delete, false,
 triggerBodyDel.Replace("XXXXXX", tableName));

我试图编写以下SQL语句,但我收到语法错误。对于上面提到的3个触发器中的每一个

this.Sql($"ALTER TRIGGER {SchemaName},{tableName},_INS,{TriggerType.Insert},{false},{triggerBodyIns.Replace(XXXXXX ,{tableName})}");

有什么建议?

c# sql-server database-migration
1个回答
0
投票

管理解决它

Sql($"ALTER TRIGGER {SchemaName}.[UserAccess__INS] ON {SchemaName}.{tableName} FOR Insert  AS BEGIN SET NOCOUNT ON declare @Now as DateTimeOffset = SYSDATETIMEOFFSET () declare @EntityName as nvarchar = \'{tableName}\' INSERT SynchronisationData (Id, EntityName, EntityKey, UpdateTime, UpdateType, Created, CreatedBy, Modified, ModifiedBy) SELECT NEWID(), \'{tableName}\', Id, Created, 0, @Now,\'InsertTrigger\', @Now,\'InsertTrigger\'FROM inserted END");
Sql($"ALTER TRIGGER {SchemaName}.[UserAccess__UPD] ON {SchemaName}.{tableName} FOR Update  AS BEGIN SET NOCOUNT ON declare @Now as DateTimeOffset = SYSDATETIMEOFFSET () declare @EntityName as nvarchar = \'{tableName}\' INSERT SynchronisationData (Id, EntityName, EntityKey, UpdateTime, UpdateType, Created, CreatedBy, Modified, ModifiedBy) SELECT NEWID(),\'{tableName}\', Id, Modified, 1, @Now,\'UpdateTrigger\', @Now,\'UpdateTrigger\'FROM inserted END");
© www.soinside.com 2019 - 2024. All rights reserved.