Torna al Thread
[Microsoft.SqlServer.Server.SqlTrigger(Name = "InsteadOfInsertViewSostanzaAssociazioni", Target = "VIEWSOSTANZAASSOCIAZIONI", Event = "INSTEAD OF INSERT")]
public static void InsteadOfInsertViewSostanzaAssociazioni()
{
try
{
SqlTriggerContext context = SqlContext.TriggerContext;
SqlConnection connection = new SqlConnection(@"context connection=true");
connection.Open();
//Carico le righe inserite
SqlDataAdapter tableLoader = new SqlDataAdapter(@"SELECT * FROM INSERTED", connection);
DataTable insertedTable = new DataTable();
tableLoader.Fill(insertedTable);//Carico i dati
SqlCommand select = connection.CreateCommand();
select.CommandType = CommandType.Text;
select.CommandText = "SELECT IDASSOCIAZIONE FROM ASSOCIAZIONI_AORMANATT WHERE IDAREA = @IDAREA AND IDMANSIONE = @IDMANSIONE AND IDATTIVITA = @IDATTIVITA";
select.Parameters.Add(new SqlParameter("@IDAREA",SqlDbType.Int));
select.Parameters.Add(new SqlParameter("@IDMANSIONE",SqlDbType.Int));
select.Parameters.Add(new SqlParameter("@IDATTIVITA",SqlDbType.Int));
SqlCommand insert = connection.CreateCommand();
insert.CommandType = CommandType.Text;
insert.CommandText = "INSERT INTO ASSOCIAZIONI_AORMANATT(IDAREA,IDMANSIONE,IDATTIVITA,USERID,TIMESTAMP,RECORDELIMINATO,LASTUPDATE) VALUES (@IDAREA,@IDMANSIONE,@IDATTIVITA,@USERID,@TIMESTAMP,@RECORDELIMINATO,@LASTUPDATE)SELECT SCOPE_IDENTITY()";
insert.Parameters.Add(new SqlParameter("@IDAREA", SqlDbType.Int));
insert.Parameters.Add(new SqlParameter("@IDMANSIONE", SqlDbType.Int));
insert.Parameters.Add(new SqlParameter("@IDATTIVITA", SqlDbType.Int));
insert.Parameters.Add(new SqlParameter("@LASTUPDATE", SqlDbType.DateTime));
insert.Parameters.Add(new SqlParameter("@USERID", SqlDbType.VarChar));
insert.Parameters.Add(new SqlParameter("@TIMESTAMP", SqlDbType.DateTime));
insert.Parameters.Add(new SqlParameter("@RECORDELIMINATO", SqlDbType.Bit));
SqlCommand insertEntita = connection.CreateCommand();
insertEntita.CommandType = CommandType.Text;
insertEntita.CommandText = "INSERT INTO ASSOCIAZIONI_ENTITA (IDASSOCIAZIONE,IDENTITA,USERID,TIMESTAMP,RECORDELIMINATO) VALUES (@IDASSOCIAZIONE,@IDENTITA,@USERID,@TIMESTAMP,@RECORDELIMINATO)";
insertEntita.Parameters.Add(new SqlParameter("@IDASSOCIAZIONE", SqlDbType.Int));
insertEntita.Parameters.Add(new SqlParameter("@IDENTITA", SqlDbType.Int));
insertEntita.Parameters.Add(new SqlParameter("@USERID", SqlDbType.VarChar));
insertEntita.Parameters.Add(new SqlParameter("@TIMESTAMP", SqlDbType.DateTime));
insertEntita.Parameters.Add(new SqlParameter("@RECORDELIMINATO", SqlDbType.Bit));
DataRow insertedRow = null;
DateTime timestamp = DateTime.Now;
if (insertedTable.Rows.Count > 0)
{
// Ottengo il riferimento alla riga inserita
insertedRow = insertedTable.Rows[0];
select.Parameters["@IDAREA"].Value = insertedRow["IDAREA"];
select.Parameters["@IDMANSIONE"].Value = insertedRow["IDMANSIONE"];
select.Parameters["@IDATTIVITA"].Value = insertedRow["IDATTIVITA"];
SqlDataReader reader = select.ExecuteReader();
object idAssociazione;
if (reader.Read())
{
idAssociazione = reader["IDASSOCIAZIONE"];
reader.Close();
}else
{
reader.Close();
// Imposto i dati
insert.Parameters["@USERID"].Value = insertedRow["USERID"];
//insert.Parameters["@TIMESTAMP"].Value = insertedRow["TIMESTAMP"];
insert.Parameters["@TIMESTAMP"].Value = timestamp;
//insert.Parameters["@LASTUPDATE"].Value = insertedRow["TIMESTAMP"];
insert.Parameters["@LASTUPDATE"].Value = timestamp;
insert.Parameters["@RECORDELIMINATO"].Value = insertedRow["RECORDELIMINATO"];
insert.Parameters["@IDAREA"].Value = insertedRow["IDAREA"];
insert.Parameters["@IDMANSIONE"].Value = insertedRow["IDMANSIONE"];
insert.Parameters["@IDATTIVITA"].Value = insertedRow["IDATTIVITA"];
idAssociazione = insert.ExecuteScalar();
}
insertEntita.Parameters["@IDASSOCIAZIONE"].Value = idAssociazione;
insertEntita.Parameters["@IDENTITA"].Value = insertedRow["IDSOSTANZA"];
insertEntita.Parameters["@USERID"].Value = insertedRow["USERID"];
//insertEntita.Parameters["@TIMESTAMP"].Value = insertedRow["TIMESTAMP"];
insertEntita.Parameters["@TIMESTAMP"].Value = timestamp;
insertEntita.Parameters["@RECORDELIMINATO"].Value = insertedRow["RECORDELIMINATO"];
insertEntita.ExecuteNonQuery();
}
}
catch (Exception ex)
{
SqlContext.Pipe.Send(string.Format("Errore:{0},StackTrace:{1}", ex.Message, ex.StackTrace));
throw ex;
}
}