sql >> Database teknologi >  >> RDS >> Oracle

Kan ikke slette i databasen på grund af begrænsninger

Den bedste måde at gøre det på er ved at bruge en lagret fortsæt i stedet for en sql-sætning i C#-kode. Du får fejl, fordi de refererede poster stadig findes i den refererede tabel og bruger cmd.ExecuteReader(); i stedet for cmd.ExecuteNonQuery(); . Så du skal slette poster for DBS2_MOVIE WHERE MOVIE_ID = :AccountID fra alle de tabeller, hvor der er begrænsning for tabel DBS2_MOVIE er til stede.

Følgende kode kan hjælpe dig:

CREATE OR REPLACE PROCEDURE Delete_DBS2_MOVIE(p_MOVIE_ID IN DBS2_MOVIE.MOVIE_ID%TYPE)
IS
BEGIN

  --First delete p_MOVIE_ID from all the table where there is a constraint on DBS2_MOVIE 
  --i.e. all the constraints you are getting error for
  DELETE FROM XXX WHERE MOVIE_ID = p_MOVIE_ID

  DELETE FROM DBS2_MOVIE WHERE MOVIE_ID = p_MOVIE_ID;

END;

Rediger din C#-kode som:

public bool DeleteMovie(int MovieID)
{


    string sql = "Delete_DBS2_MOVIE";
    try
    {

        this.Connect();
        OracleCommand cmd = new OracleCommand(sql, this.connection);

        cmd.Parameters.Add(new OracleParameter("p_MOVIE_ID", MovieID));
        cmd.CommandType = System.Data.CommandType.StoredProcedure;

        cmd.ExecuteNonQuery();


    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message);
        throw;
    }
    finally
    {
        this.connection.Close();
    }

    return true;
}


  1. fejl ved læsning af asp.net-medlemskabstabeller i MySQL

  2. APACHE crasher:Forælder:underordnet proces afsluttet med status 3221225477 -- Genstarter

  3. orakelantal null pr. kolonne

  4. Sådan afsluttes PostgreSQLs Command Line Utility (psql)