Navicat 在添加mysql表的外键时报错1005,error150,

MySQL 表外键

外键是一个在关联式表中符合另一个表主键的栏位。外键可以用作交叉参考表。

在表设计器的 外键 选项卡管理表外键。只需简单地点击或双击一个外键栏位来编辑。右击来显示弹出菜单或使用外键工具栏,能让你创建新的、编辑或删除选择的外键栏位。

注意:MySQL 3.23.44 或以上版本支持外键。

添加外键

添加一个外键

在表设计器中打开表。
打开 外键 选项卡。
右击并在弹出菜单中选择 添加外键 或在工具栏点击 添加外键。
编辑外键属性。
注意:两个表必须是 InnoDB 类型(或如果你有 solidDB 类型 solidDB for MySQL)。在参考表中,必须有一个索引,在外键列以相同排序编入第一列。由 MySQL 4.1.2 开始,如果该索引不存在,它将会在参考表中自动创建。

编辑外键

编辑一个外键

在表设计器中打开表。
打开 外键 选项卡。
只需点击或双击外键来编辑。
注意:MySQL 4.0.13 或以上版本支持。

删除外键

删除一个外键

在表设计器中打开表。
打开 外键 选项卡。
在要删除的外键上右击并在弹出菜单中选择 删除外键 或在工具栏点击 删除外键。
在对话窗口确认删除。
注意:MySQL 4.0.13 或以上版本支持。

error 1005: can not create table(error150)

1.首先确保自己的表为innoDB类型,若不是,可以更新表的引擎

alter table work engine =innodb;

然后可以查看表(这里work为表名)的结构

show create table work;

2.若Navicat依然报错,建议用命令行添加外键约束

alter table 表A add constraint 外键名 foreign key (person_no) references 表C(person_no) ON UPDATE CASCADE ON DELETE CASCADE

ON DELETE

restrict(约束):当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除。

no action:意思同restrict.即如果存在从数据,不允许删除主数据。

cascade(级联):当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则也删除外键在子表(即包含外键的表)中的记录。

set null:当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)

ON UPDATE

restrict(约束):当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许更新。

no action:意思同restrict.

cascade(级联):当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则也更新外键在子表(即包含外键的表)中的记录。

set null:当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)。

注:NO ACTION和RESTRICT的区别:只有在及个别的情况下会导致区别,前者是在其他约束的动作之后执行,后者具有最高的优先权执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值