Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Không thể xóa trong cơ sở dữ liệu vì các ràng buộc

Cách tốt nhất để làm điều đó là sử dụng một quy trình được lưu trữ thay vì một câu lệnh sql trong mã C #. Bạn đang gặp lỗi vì các bản ghi được tham chiếu vẫn có trong bảng được tham chiếu và đang sử dụng cmd.ExecuteReader(); chứ không phải là cmd.ExecuteNonQuery(); . Vì vậy, bạn cần xóa các bản ghi cho DBS2_MOVIE WHERE MOVIE_ID = :AccountID từ tất cả các bảng có ràng buộc đối với bảng DBS2_MOVIE.

Mã sau có thể giúp bạn:

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;

Sửa đổi mã C # của bạn thành:

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 xóa các hàng khỏi nhiều bảng

  2. ora:12505:TNS:người nghe hiện không biết về SID được cung cấp trong bộ mô tả kết nối (DBD ERROR:OCIServerAttach)

  3. Câu lệnh SQL để nối và đưa ra kết quả trong nhiều cột

  4. Oracle ORA-01008:không phải tất cả các biến bị ràng buộc Lỗi w / Tham số

  5. Tìm xem một cột trong Oracle có một chuỗi