MySQL建立外來鍵[條件/注意事項]
先看個表例項:
mysql> CREATE TABLE `ZZJG` ( `id` int(11) NOT NULL auto_increment, `orgid` varchar(32) NOT NULL COMMENT '組織機構ID', `orgname` varchar(32) DEFAULT NULL COMMENT '組織機構名稱', `parentid` varchar(32) DEFAULT NULL COMMENT '上級組織機構ID', index(`orgid`), PRIMARY KEY (`id`,`orgid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='組織機構表'; Query OK, 0 rows affected mysql> CREATE TABLE `REGION` ( `id` int(11) NOT NULL auto_increment, `regionid` varchar(32) NOT NULL COMMENT '區域ID', `regionname` varchar(32) NOT NULL COMMENT '區域名稱', `pregionid` varchar(32) DEFAULT NULL COMMENT '上級區域ID ', `orgid` varchar(32) DEFAULT NULL COMMENT '上級組織機構ID ', index(`regionid`,`orgid`), PRIMARY KEY (`id`), foreign key(`orgid`) references zzjg(`orgid`) on delete cascade on update cascade ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='區域表'; Query OK, 0 rows affected
==============================================================
很多時候,我們去建立外來鍵,總是出錯。這個主要是我們沒搞清楚建立條件、沒有認真閱讀操作手冊造成的。
==================================條件/注意事項==========================
為了建立兩個MySQL表之間的一個外來鍵關係,必須滿足以下三種情況:
* 兩個表必須是InnoDB表型別。
* 使用在外來鍵關係的域(欄位)必須為索引型(Index)。所以要為設定外來鍵的欄位建立index。
* 使用在外來鍵關係的兩個域(欄位)資料型別要相同。
相關推薦
MySQL建立外來鍵[條件/注意事項]
先看個表例項: mysql> CREATE TABLE `ZZJG` ( `id` int(11) NOT NULL auto_increment, `orgid` varchar(32) NOT NULL COMMENT '組織機構ID', `orgname`
MySQL建立外來鍵關聯報錯1005
主要原因有 1.外來鍵型別不對應 2.外來鍵字元編碼不對應 3.沒有建立對應的索引 4.是否有重複主鍵 附上建立索引以及外來鍵的語句(參考) ALTER TABLE country add INDEX index_name(emp_id) ALTER TABLE emp ad
MySQL建立外來鍵連線報錯
當 你試圖在mysql中建立一個外來鍵的時候,這個出錯會經常發生,這是非常令人沮喪的。像這種不能建立一個.frm 檔案的報錯好像暗示著作業系統的檔案的許可權錯誤或者其它原因,但實際上,這些都不是的,事實上,這個mysql報錯已經被報告是一個mysql本身的 bug並出現在mysql 開發者列表當中很多年了,
MySQL建立外來鍵時出現error121解決辦法
環境:MySQL Server 5.5 + Navicat for Mysql 10.0 問題:建立外來鍵時出現121錯誤 解決:把外來鍵名改為其他名字 錯誤資訊參考: error121 這是外關鍵字名字重複的錯誤,即使是在不同的表中,外關鍵字的名字也不能重複。 er
使用NaviCat for mysql建立外來鍵的要求
要在Mysql資料庫平臺建立外來鍵關聯,必須滿足以下幾個條件: 1. 兩個表必須為 InnoDB 型別。 2. 外來鍵和被引用鍵必須是索引中的第一列,InnoDB不會自動為外來鍵和被引用鍵建立索引,必須明確建立 它們。 3. 外來鍵與對應的被引用鍵在 Inn
MySQL建立外來鍵關聯錯誤
當 你試圖在mysql中建立一個外來鍵的時候,這個出錯會經常發生,這是非常令人沮喪的。像這種不能建立一個.frm 檔案的報錯好像暗示著作業系統的檔案的許可權錯誤或者其它原因,但實際上,這些都不是的,事實上,這個mysql報錯已經被報告是一個mysql本身的 bug並出現在mysql 開發者列表當中很多年了,然
mysql建立外來鍵
如果資料庫兩個表有相同欄位,通過外來鍵將兩個表聯絡起來可以只用儲存一個表的資訊就可以實現相應的功能。 檢視建立表命令:show create table 表名字; 建立表: mysql
mysql建立外來鍵報錯的原因以及處理(can't not create table)
最近在玩資料庫的時候,偶爾會有外來鍵建立不成功的時候,於是上網查閱資料,整合自己的理解有了以下這篇文章:mysql建立外來鍵不成功的原因以及處理方法:第一種:外來鍵的欄位與關聯的欄位的型別不匹配(包括編碼格式的不匹配):兩個不同的表格(一個是record(借書記錄表),一個是
mysql 設定外來鍵時注意的小細節
設定外來鍵的命令格式為: alter table <表名1> add constraint <約束名> foreign key (需要設定外來鍵的列) references <表名2> (與外來鍵關聯的列); 如有兩張表
MYSQL建立外來鍵失敗幾種情況記錄Can't create table不能建立表
像這種不能建立一個.frm 檔案的報錯好像暗示著作業系統的檔案的許可權錯誤或者其它原因,但實際上,這些都不是的,事實上,這個mysql報錯已經被報告是一個mysql本身的bug並出現在mysql 開發者列表當中很多年了,然而這似乎又是一種誤導。 在很多例項中,這種錯誤的發生都是因為mysql一直以來都不能很
mysql的外來鍵約束條件及注意事項
在使用mysql的外來鍵約束時,很多人都會在建立外來鍵時失敗,究其原因,有以下四種: 1.建立外來鍵時,你的儲存引擎應該支援外來鍵並且外表(含有外來鍵的表)和從表(引用外來鍵列的表)的列所使用的儲存引
MySQL無法建立外來鍵錯誤 Err 1215: Cannot add the foreign key constraint
今天在寫資料庫作業時,遇到的無法建立外來鍵問題 create table department (dept_name varchar(20), building varchar(15),
Mysql中文亂碼以及建立外來鍵報1215
今天使用Mysql報兩個錯誤,這裡記錄一下。 1、使用insert語句以及sqlyog插入中文字元顯示亂碼,核對資料庫編碼是utf8, 建表語句也設定了引擎和預設字符集: CREATE TABLE `department` (
Mysql無法建立外來鍵的原因
在Mysql中建立外來鍵時,經常會遇到問題而失敗,這是因為Mysql中還有很多細節需要我們去留意,我自己總結並查閱資料後列出了以下幾種常見原因。 1. 兩個欄位的型別或者大小不嚴格匹配。例如,如果一個是int(10),那麼外來鍵也必須設定成int(10),而不是int(1
MySql查詢int型別欄位作查詢條件注意事項
今天使用MySql查詢時,發現一個詭異的現象,id是int型別自增主鍵,傳入查詢為UUID隨機字串,居然查到了記錄,如圖: 研究發現,MySql以字串第一個字元開始遍歷,遇到非數字則結束,遍歷到的數字作為查詢條件,如上圖第一個字母前的數字“1”作為條件,查詢到Id為“1
mySql資料庫外來鍵約束條件
[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...) REFERENCES tbl_name (index_col_name, ...) [ON DELETE {RESTRICT | CASCADE | SET NULL | NO
MySQL 新建資料庫、建立索引、建立外來鍵
本文通過命令操作資料庫的方式,以簡單會員表為例,為讀者簡述資料表的簡單設計及操作。 1. 新建資料庫: CREATE DATABASE 資料庫名; 2. 新建資料表: //Tab1
為什麼在MySQL資料庫中無法建立外來鍵?(MyISAM和InnoDB詳解)
問題描述:為什麼在MySQL資料庫中不能建立外來鍵,嘗試了很多次,既沒有報錯,也沒有顯示建立成功,真實奇了怪,這是為什麼呢? 問題解決:通過查詢資料,每次在MySQL資料庫中建立表時預設的情況是這樣
mysql的外來鍵設定的注意點
外來鍵是用於兩個表的資料之間建立連線,可以是一列或者多列,即一個表可以有一個或多個外來鍵。外來鍵可以不是這個表的主鍵,但必須和另外一個表的主鍵相對應(欄位的型別和值必須一樣)。帶有主鍵的那張表稱為父表,含外來鍵的是子表,必須先刪除外來鍵約束才能刪除父表。
MySQL 關於建立外來鍵失敗的問題
今天,用Navicat為兩張表建立外健關係,總是提示建立失敗資訊,發現是兩張表關聯的欄位型別問題,但兩個欄位都是int型哩,怎麼會還會型別不一致呢,最後發現到一個地方有點不一樣,就是在“設計表”介面下方有個“無符號”的複選框,兩張表的主鍵欄位其中一個沒勾選上這個複選框而導致雖