2016-03-02 33 views
1

我檢查依賴於這個錯誤的所有問題,但找不到我的答案得到錯誤不能刪除或更新父行,外鍵約束失敗甚至設置ON DELETE NO ACTION ON UPDATE NO ACTION

這是我的EER圖EER Diagram 我在銷售中插入一行例如像這樣(SellerFId = 1,GoodFId = 1,CustomerFId = 1)所以我想能夠從自己的表中刪除賣方或好或客戶因此,插入的行在銷售仍然保留我用這種外部約束銷售和其他表

ON DELETE NO ACTION ON UPDATE NO ACTION 

但是,當我刪除TE賣方或好或客戶從自己的表中的MySQL不允許我,給我這個錯誤

不能刪除或更新父行,外鍵約束失敗(newmobarakkabulsales,約束fk_Sellers_has_Goods_has_Customers_Sellers1外鍵(SellerFId)參考文獻staffsStaffId)ON DELETE NO ACTION ON UPDATE NO ACTION)

所以特地我的問題是我真的需要有營業額及其他表之間的外鍵約束或者沒有(如果不是這樣,這是什麼查詢 「ON DELETE NO ACTION ON UPDATE NO ACTION」 )

回答

1

在MySQL中,NO ACTION is an equivalent of RESTRICT

NO ACTION:一個KEYWO從標準SQL開始。在MySQL中,相當於RESTRICT。如果在被引用的表中存在相關的外鍵值,MySQL服務器會拒絕父表的刪除或更新操作。一些數據庫系統具有延期檢查,NO ACTION是延期檢查。在MySQL中,外鍵約束被立即檢查,所以NO ACTION與RESTRICT相同。

RESTRICT:拒絕對父表的刪除或更新操作。指定RESTRICT(或NO ACTION)與省略ON DELETE或ON UPDATE子句相同。

至於你最後的問題,你是否真的需要這樣的約束是根據你的應用程序的規格來確定的。

+0

所以在這個圖表如果我放棄外鍵約束,它真的很重要(我的意思是我會面對任何問題) 我的需求是保留'銷售'的記錄如果我從父表中刪除它們 –

+0

如果你刪除約束,數據庫將不再執行數據完整性..不僅如此,我不能說,因爲我真的不知道你的應用程序。 –

+0

正如我發佈的圖表'銷售'表包含記錄(銷售員工表銷售商品從'商品'表到客戶從'客戶'表) 因此,如果從(員工,客戶,貨物)刪除他們的記錄應保存到銷售表 –

相關問題