我为部分类中的触发器创建了现有的数据库迁移。现在我需要更新这个触发器。退出代码
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})}");
有什么建议?
管理解决它
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");