簡體   English   中英

刪除具有外鍵約束的訪問記錄

[英]Delete Access record that has foreign key constraint

我正在制作一個基於 Access 數據庫的 WPF 項目。 數據庫有兩個表:

  • 電影(電影 ID:PK、標題、導演等)
  • 演員(ActorID:PK,MovieID:FK,名字,姓氏等)

問題是如果我想刪除一部電影,如果仍有演員附加到電影中,我會收到錯誤消息。

我刪除電影的代碼:

public static void DeleteMovie(Movie mov)
{
        string commandString = string.Format("DELETE FROM tblMovies WHERE MovieID = {0}", mov.MovieID);

        OleDbConnection conn = new OleDbConnection(connectionString);
        OleDbCommand command = new OleDbCommand();
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        conn.Open();

        command.Connection = conn;
        command.CommandText = commandString;
        adapter.DeleteCommand = command;
        adapter.DeleteCommand.ExecuteNonQuery();
        conn.Close();
}

作為臨時解決方案,我添加了一個消息框,要求確認演員是否從電影中刪除。 但是,如果它們不是,並且您單擊是,則會發生這種情況:

Movie mov = (Movie)listBoxMovies.SelectedItem;
MovieRepository.DeleteMovie(mov);
MessageBox.Show("The movie: '" + mov.Title + " 'has been deleted.");

我得到的錯誤是我想刪除演員具有相同 MovieID 的電影:

System.Data.dll 中發生類型為“System.Data.OleDb.OleDbException”的未處理異常 附加信息:無法刪除或更改記錄,因為表“tblActors”包含相關記錄。

我怎樣才能做到如果我點擊“刪除電影”按鈕,電影和相應的演員都會被刪除?

您可以編寫 2 個查詢 - 首先刪除演員,然后刪除電影。

或者,您可以進入 Access 並編輯與“級聯刪除相關記錄”的關系。

要到達那里,請進入 Access,轉到數據庫工具並單擊關系。 右鍵單擊從電影到演員的關系箭頭,單擊“編輯關系”,您將在那里找到選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM