Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

बाधाओं के कारण डेटाबेस में हटा नहीं सकते

ऐसा करने का सबसे अच्छा तरीका सी # कोड में एक एसक्यूएल स्टेटमेंट की बजाय संग्रहीत कार्यवाही का उपयोग करना है। आपको त्रुटि मिल रही है क्योंकि संदर्भित रिकॉर्ड अभी भी संदर्भित तालिका में मौजूद हैं और cmd.ExecuteReader(); का उपयोग कर रहे हैं के बजाय cmd.ExecuteNonQuery(); . इसलिए आपको DBS2_MOVIE WHERE MOVIE_ID = :AccountID के रिकॉर्ड हटाने की जरूरत है उन सभी तालिकाओं से जहां तालिका के लिए बाधा है DBS2_MOVIE मौजूद है।

निम्नलिखित कोड आपकी मदद कर सकता है:

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;

अपने C# कोड को इस प्रकार संशोधित करें:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle में बूलियन फील्ड

  2. SQL शून्य मानों पर शामिल हों

  3. जहां स्थिति pl/sql . के लिए एक सरणी के माध्यम से लूपिंग

  4. Oracle में प्रतिशत वार गणना के आधार पर कई कॉलम अपडेट करें

  5. टेबल एड कॉलम ऑरैकल को कैसे बदलें?