MySQL外键(两列做主键)

目的:用两列创建主键

表一

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)另外还有一种可能就是关联字段在引用表中没有建立索引,你必须在引用表中为关联字段创建一个索引。

查询参考网址:
https://blog.csdn.net/ghjzzhg/article/details/77852854

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值