Tuesday, May 3, 2011

Delete from multiple tables ASP.NET

How to delete from two tables at once using the same delete statement in ASP.Net?

From stackoverflow
  • If your database is MsSql you can combine several delete statements in one SqlCommand.

    Try this:

    string deleteQuery = "DELETE FROM Table1; DELETE FROM Table2;";
    using (SqlConnection connection = new SqlConnection(connectionstring))
    using (SqlCommand deleteCommand = new SqlCommand(deleteQuery, connection))
    {
        connection.Open();
        deleteCommand.ExecuteNonQuery();
    }
    

    This will delete all records from both table1 and table2 in one pass.

    Rune Grimstad : I see you taggged the question with vb.net. Hopefully you can manage to translate my example from C#...
  • I'm not sure what you mean, but if you want to delete from a table using another tables' data, this can be done using the following snippet (SQL Server):

    DELETE x
    FROM TableX x INNER JOIN TableY y
       ON x.SomeID = y.SomeID
    WHERE ...
    

    If you want to execute two DELETE statements in one command, you could either just concatenate them separating them with a semicolon:

    DELETE TableX WHERE SomeID = ...; DELETE TableY WHERE SomeID = ...
    

    You can also use a stored procedure:

    CREATE PROCEDURE DeleteTwoTables
       @ParamX int,
       @ParamY int
    AS
       DELETE TableX WHERE SomeID = @ParamX
       DELETE TableY WHERE SomeID = @ParamY
    
  • Just concatenate delete sql scripts :

    Using connection As New SqlConnection(connectionString)
        Dim command As New 
           SqlCommand("DELETE FROM Table1 WHERE ID1=@ID1; DELETE FROM Table2 WHERE ID2=@ID2;", connection)
    
        command.Parameters.Add("@ID1", 1);
        command.Parameters.Add("@ID2", 2);
    
        command.Connection.Open()
        command.ExecuteNonQuery()
    End Using
    

0 comments:

Post a Comment