茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1730177 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_60D_00174.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2016/2/15 9:14:15

MySQL 建立Foreign Key ( InnoDB ) 時要注意的一件事

今天在測試資料庫刪除資料時,發現了一件事

在有被其他資料表 Reference 成 Foreign Key 的情況下刪除資料時資料庫會發出:

Cannot delete or update a parent row: a foreign key constraint fails

後來才發現在建立資料庫時,如果不會自己的 Foreign Key 設定動作的話,資料庫預設是不會做連動的更改( NO ACTION )。

 

-------------------------------------- 
CREATE TABLE parent(
   id INT NOT NULL,
   PRIMARY KEY (id)
) TYPE = INNODB;

CREATE TABLE child(
   id INT,
   parent_id INT,
   INDEX par_ind (parent_id),
   FOREIGN KEY(parent_id) REFERENCES parent(id) ON DELETE CASCADE ON UPDATE CASADE
) TYPE = INNODB;

---------------------------------------

可以下的參數有:


[ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}]
[ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}]

參數解釋:

CASCADE - 會將有所關聯的紀錄行也會進行刪除或修改。

SET NULL - 會將有所關聯的紀錄行設定成 NULL。

NO ACTION - 有存在的關聯紀錄行時,會禁止父資料表的刪除或修改動作。

RESTRICT - 與 NO ACTION 相同。

 

詳細的錯誤訊息可以在 MySQL 指令模式下輸入:

SHOW engine innodb status;

 

由於會列出很多資料,所以要找一下,在訊息中有一组【LATEST FOREIGN KEY ERROR】會有最近錯誤的詳細描述和解决辦法。

 

 

REF: http://jax-work-archive.blogspot.com/2007/10/innodb-mysql-foreign-key.html



原文出處:MySQL 建立Foreign Key ( InnoDB ) 時要注意的一件事 @ 複雜的人生,複雜的自己。 :: 痞客邦 PIXNET ::
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|