MySQL外來鍵(兩列做主鍵)

2021-09-17 18:50:04 字數 1017 閱讀 1775

表一

create	table	ta1(

id int not null primary key auto_increment,

pid int not null,

uname varchar(20)

)engine =innodb default charset=utf8

由於這種寫法無法再表二無法進行外來鍵的關聯 顧寫成下面的格式

表一的變形

create	table	t1(				-- 使用時注意改名

id int not null auto_increment,

pid int not null,

uname varchar(20),

primary key(id,pid)

)engine =innodb default charset=utf8

表二

create table table2(

id int primary key auto_increment,

name char(20),

id1 int,

id2 int,

constraint fk_1 foreign key(id1,id2) references t1(id,pid)

)

注意1:

constraint (即 fk_1)後面的名字必須是唯一的,如果重複將會無法建立出表,所以經常用兩張表的名來命名這個

注意:

[err] 1005 - can』t create table 『teacher.tq2』 (errno: 150)

cause:(1)遇到這個錯誤請給你定義的外來鍵換唯一無重複的名字;

(2)或者是這個外來鍵已經和表的主鍵關聯了;

(3)另外還有一種可能就是關聯欄位在引用表中沒有建立索引,你必須在引用表中為關聯字段建立乙個索引。

查詢參考**:

mysql 主鍵 外來鍵

1 候選鍵 關係中的乙個屬性組,其值能唯一標識乙個元組,若從該屬性組中去掉任何乙個屬性,它就不具有這一性質了,這樣的屬性組稱作候選碼。比如人的自然屬性 身高,體重,年齡,指紋樣式.2 主鍵 當有多個候選碼時,可以選定乙個作為主碼,選定的候選碼稱主鍵。主鍵是能確定一條記錄的唯一標識 比如上面例子中的指...

mysql主鍵 外來鍵

主鍵是能確定一條記錄的唯一標識,主鍵字段必須唯一,必須非空,乙個表中只能有乙個主鍵,主鍵可以包含乙個或多個字段。打個比方,一條記錄包括身份正號,姓名,年齡,學校,國籍,性別等。身份證號是唯一能確定你這個人的,其他都可能有重複,所以,身份證號是主鍵。外來鍵表示了兩個關係之間的相關聯絡。以另乙個關係的外...

mysql的主鍵 外來鍵約束 MySQL 主鍵外來鍵

笛卡兒積 多表查詢 多個表變成乙個表 完整性約束條件 primary key 標識該屬性為該錶的主鍵,可以唯一的標識對應的元組 foreign key 標識該屬性為該錶的外來鍵,是與之聯絡的某錶的主鍵 not null 標識該屬性不能為空 unique 標識該屬性的值是唯一的 auto increm...