重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
详细说明可以百度搜我的博客: mysql foreign外键详细使用方法和使用事项_2018_lcf
创新互联是一家专注网站建设、网络营销策划、重庆小程序开发、电子商务建设、网络推广、移动互联开发、研究、服务为一体的技术型公司。公司成立10多年以来,已经为近1000家成都宴会酒店设计各业的企业公司提供互联网服务。现在,服务的近1000家客户与我们一路同行,见证我们的成长;未来,我们一起分享成功的喜悦。
---------下面是使用方法
使用外键的前提:
1. 表储存引擎必须是innodb,否则创建的外键无约束效果。
2. 外键的列类型必须与父表的主键类型完全一致。
3. 外键的名字不能重复(一般使用。
建外键表两种方式(创建表时关联/添加外键)
1) 第一种方式创建表时加外键使用实例:
mysql create table A( name char(12), id int(8) ,index(id))engine=innodb; //先建立A表,
mysql create table B( //建立B表,同时做外键
- id int(9),
- money int(9),
- index(id),
- foreign key(id) references A (id) //这个是必加项,foreign key(B表要关联的字段),references A表名 (对应字段)
- on delete cascade on update cascade //这里是可选项的,只加一项或都不加都可以的,看需求.
- )engine=innodb; //这个必须是innodb类型,并且和A表的一致
第二方式在已有的表上做和A表关联的外键(最好是新建好没有记录的,不然会因为记录对不上而创建不成功)
mysql create table C( //这里先创建一个空表C
- id int(7),
- money int(5),
- index(id)
- )engine=innodb;
mysql alter table Cadd constraint abc //在C表上添加和表A关联的外键,constraint 外键名(自己任意取)
- foreign key(id) references A(id) //和创建时一样的输入
- on delete cascade on update cascade; //一样是可选项,这行不写也可以通过.
注: @以上的cascade是上面介强的四种模式之一,是可以替换成其它模式的,如写成on update set null
@还可以同时做两个外键,如写成foreign key(id,money) references A(id,money) 即可
@两张表关联字段名可以取不一样名字,但类型必须一致
主你要知道,建外键的作用是使用外键所引用的表来约束所要用到该外键的表!
明白了外键的特性,再来看看这个问题.既然表都建起来了,那么问题肯定不是出在建表结构或者引用上。异常提示说违反约束规则.
分析你的问题,问题出在:
1.在你的航班表中并没有数据,这时候你往机票表中插入数据的时候并没有外键所参考的主键给你引用,这时候因为找不到所要参考的引用,约束规则生效,使你在没有主键参考的情况下不能往表中插入数据.
2.问题分析同上面,但是不同的是航班表中有数据,但是你机票表中插入数据的时候,外键的值并没有在航班表中存在,同样也会报相同的异常.
楼主在Java区也有个相同的问题。。。
通过工具NAVICAT 设计表时进行设计
打开NAVICAT,连接数据库
右键目标表,选择设计表
打开后选择外键菜单,具体如图:
分别设置外键名,字段,关联数据库、表、字段,以及删除时操作,更新时操作方式然后点击保存按钮即可
也可以通过SQL方式完成对表外键的添加,如:
语法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);
SQL 数据库建表时怎么设置外键,
1 -- 创建测试主表. ID 是主键.
2 CREATE TABLE test_main (
3 id INT,
4 value VARCHAR(10),
5 PRIMARY KEY(id)
6 );
7 go
-- 建表时设置外键
1 CREATE TABLE test_sub (
2 id INT,
3 main_id INT,
4 value VARCHAR(10),
5 PRIMARY KEY(id),
6 FOREIGN KEY (main_id) REFERENCES test_main
7 );
8 go
sql怎么设置外键
可以在创建表的时候创建,也可以在创建表之后创建。
创建表时创建:
create table student
(id int primary key,
name char(4),
dept char(9)
sex char(4))
create table grade
(id int ,
grade int
constraint id_fk foreign key (id) references student (id)
)
或创建了两表之后再建
alter table grade
add constraint id_fk foreign key (id) references student (id)
呵呵,希望能帮助你。
sql server中图形界面如何设置外键
在那个属性上右键 有约束 自己添加就OK了
mysql怎么设置外键?
ALTER TABLE b ADD CONSTRAINT c FOREIGN KEY(c) REFERENCES a(c) ON DELETE CASCADE ON UPDATE CASCADE; 哎呀。。好像写反了。我写的是把表B的c设置为外键了。。你改一下吧。
如何在数据库的建立表的时候设置表的外键
1 -- 创建测试主表. ID 是主键.
2 CREATE TABLE test_main (
3 id INT,
4 value VARCHAR(10),
5 PRIMARY KEY(id)
6 );
7 go
-- 建表时设置外键
1 CREATE TABLE test_sub (
2 id INT,
3 main_id INT,
4 value VARCHAR(10),
5 PRIMARY KEY(id),
6 FOREIGN KEY (main_id) REFERENCES test_main
7 );
8 go
sql server 2008 怎么设置外键
建外键的前提是此外键必须是另外一个表的主键。建外键的步骤: 第一步打开要建外键表的设计器,右击选择“关系”。然后弹出“外键关系”窗体,我们选择“添加”,然后点击“表和列规范”后面的小按钮,就会弹出另外一个窗体让我们选择主键表和列,选好之后点击确定。然后我们INSERT和UPDATE规范,在更新规则和删除规则有四个选项,分别是“不执行任何操作”、“级联”、“设置为NULL”、“设置默认值”。默认的不执行任何操作。如果是“不执行任何操作”,当我们删除或更新主键表的数据时,会告诉用户不能执行删除或更新该操作。“级联”的意思是当我们删除或更新主键表的数据时,会删除或更新外键表中所涉及的相关数据的所有行。 “设置Null”的意思是当我们删除或更新主键表的数据时,外键表中的外键列的值会设为Null,但前提是该列允许为空。 “设置默认值”的意思是如果我们将外键列定义了默认值,当我们删除或更新主键表的数据时,外键表中的外键列的值设为定义的默认值。 当然我们可以用代码创建,当我们在创建数据库表T——Card时只要加上一句话就OK啦,“Foreign key (studentNo) references T_Student(studentNo)"。如果我们已经创建了改表,那如何用代码实现了,这也很简单也就一句话“ add constraint CMPKey(外键名) foreign key(studentNo) references T_Student(studentNo)”。
sql中怎样创建外键约束
在创建表之后,添加外键约束:
alter table yuangong add constraint fk foreign key (部门罚) references bumen(部门号)
或者在创建表的时候添加外键
foreign key (部门号) references bumen(部门号)放在最后,用","与列分隔
数据库中,一对多的时候外键设置在多的那张表吗?如果一对一的时候,外键应该设置在哪里?多对多的时候,
首先,外键引用的那个列在主表中必须是主键列或者唯一列。
所以1:n的肯定把外键建立在n的那张表上。
1:1,一般要看谁是主表,谁是附属表,外键当然建立在附属表中。
n:m的情况,需要建立一个关系表,两个原表和其关系分别是1:n,1
:m
数据库语句怎么加外键
1,创建表的时候添加:foreign key (你的外键) references (表名)(字段名);
2,创建好之后修改:
alter table dbo.mh_User
add constraint FK_mh_User_..._id foreign key (你的外键) references (表名)(字段名);
Sql server怎样创建主外键关系
在要设置关系的外键表中,右击关系→添加→在表和列规范中选择关联的主表再选择外键表与其关联的字段