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; } }
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5