I have a generic clr trigger which can be attached to different tables on insert, update, delete. e.g.
[Microsoft.SqlServer.Server.SqlTrigger(Event = "FOR UPDATE, INSERT, DELETE")]
public static void TriggerHandle()
{
DataTable dataTable = new DataTable("Test");
SqlTriggerContext myContext = SqlContext.TriggerContext;
try
{
using (SqlConnection conn = new SqlConnection(CONNECTION_STRING))
{
conn.Open();
SqlCommand sqlComm = new SqlCommand();
sqlComm.Connection = conn;
switch (myContext.TriggerAction)
{
case TriggerAction.Insert:
sqlComm.CommandText = "Select *,'inserted' as operation from inserted";
break;
case TriggerAction.Update:
sqlComm.CommandText = "Select *,'updated' as operation from inserted";
break;
case TriggerAction.Delete:
sqlComm.CommandText = "Select *,'deleted' as operation from deleted";
break;
}
dataTable.Load(sqlComm.ExecuteReader(), LoadOption.Upsert);
SqlContext.Pipe.Send(String.Format("The datatable is populated with {0} rows ", dataTable.Rows.Count.ToString()));
}
}
... so it is not specific for a certain table. How can I find, inside the clr trigger, which is the sql object being updated by the trigger?