2岁宝宝不爱吃饭怎么办,大连站,人鬼殊途之无头鬼夫
前言
为mysql数据表建立主外键需要注意以下几点:
一、sql语句创建数据表并设置主外键关系
create table demo.chinesecharinfo ( id int not null auto_increment, hanzi varchar(10) not null, primary key (id) ) engine=innodb auto_increment=1 default charset=utf8 collate=utf8_general_ci; create table demo.chinesepinyininfo ( id int not null auto_increment, charid int null, pinyin varchar(10) null, tone tinyint unsigned null, primary key (id), -- 方式一:不指定外键名称,数据库自动生成 foreign key (charid) references chinesecharinfo(id) on delete cascade on update cascade -- 方式二:指定外键名称为(fk_name) -- constraint fk_name foreign key (charid) references chinesecharinfo(id) on delete cascade on update cascade ) engine=innodb auto_increment=1 default charset=utf8 collate=utf8_general_ci;
二、当数据表已经存在时,就要使用下面的方法建立主外键关系
-- 为表(demo.chinesepinyininfo)中字段(charid)添加外键,并指定外键名为(fk_name) alter table demo.chinesepinyininfo add constraint fk_name foreign key (charid) references chinesecharinfo(id); -- 为表(demo.chinesepinyininfo)中字段(charid)添加外键,不指定外键名,由数据库自动生成外键名 alter table demo.chinesepinyininfo add foreign key (charid) references chinesecharinfo(id);
三、删除主外键约束
-- 通过修改列的属性来删除自增长,第一个(id)为原列名,第二个(id)为新列名 alter table demo.chinesepinyininfo change id id int not null; -- 删除表(demo.chinesepinyininfo)中的主键约束,如果主键列为自增列,则需要先删除该列的自增长 alter table demo.chinesepinyininfo drop primary key; -- 删除表(demo.chinesepinyininfo)中的名称为(fk_name)的外键 alter table demo.chinesepinyininfo drop foreign key fk_name;
四、主外键关系的约束
如果子表试图创建一个在主表中不存在的外键值,数据库会拒绝任何insert或update操作。
如果主表试图update或者delete任何子表中存在或匹配的外键值,最终动作取决于外键约束定义中的on delete和on update选项。
on delete和on update都有下面四种动作。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
网友评论