using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Text; namespace Concurrency { public class TemporaryTrigger : IDisposable { private readonly SqlCommand _command; private readonly string _triggerName; public TemporaryTrigger(SqlConnection connection, string schemaName, string tableName, string triggerBody) { _command = connection.CreateCommand(); _triggerName = string.Format("[{0}_{1}_TemporaryTrigger]", schemaName, tableName); try { _command.CommandText = string.Format( "DROP TRIGGER {0}.{1}", schemaName, _triggerName); _command.ExecuteNonQuery(); } catch(Exception e) { //Console.WriteLine(e); } _command.CommandText = string.Format("CREATE TRIGGER {0} ON {1}.{2} FOR INSERT,UPDATE,DELETE AS {3};", _triggerName, schemaName, tableName, triggerBody); _command.ExecuteNonQuery(); _command.CommandText = string.Format("DROP TRIGGER {0}.{1}", schemaName, _triggerName); } public void Dispose() { _command.ExecuteNonQuery(); } } }