Oracle一个字段的的外键可以当另一个字段的主键吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle一个字段的的外键可以当另一个字段的主键吗相关的知识,希望对你有一定的参考价值。
主键吗
参考技术A 可以的,写段代码给你看--创建主表userinfos,userid是这个表的主键
create
table
userinfos(userid
int
primary
key
not
null,
username
varchar(20)
not
null);
--创建表scores,scid是这个scores表的主键
create
table
scores(scid
int
primary
key
not
null,
useridsc
int
not
null,score
int
not
null);
--建立主外键约束,使得成绩表里的useridsc这个列存放的学生编号,必须是userinfos表的userid列的值,也就是说,不允许还没有这个学生,就有了这个学生的成绩
alter
table
scores
add
constraint
FK_scores_userinfos
foreign
key
(useridsc)
references
userinfos(userid);
希望你能看懂
mysql中的外键foreign key
一、如果一张表中有一个非主键的字段指向了别一张表中的主键,就将该字段叫做外键。
一张表中可以有多个外键。
外键的默认作用有两点:
1.对子表(外键所在的表)的作用:子表在进行写操作的时候,如果外键字段在父表中找不到对应的匹配,操作就会失败。
2.对父表的作用:对父表的主键字段进行删和改时,如果对应的主键在子表中被引用,操作就会失败。
外键的定制作用----三种约束模式:
district:严格模式(默认), 父表不能删除或更新一个被子表引用的记录。
cascade:级联模式, 父表操作后,子表关联的数据也跟着一起操作。
set null:置空模式,前提外键字段允许为NLL, 父表操作后,子表对应的字段被置空。
使用外键的前提:
1. 表储存引擎必须是innodb,否则创建的外键无约束效果。
2. 外键的列类型必须与父表的主键类型完全一致。
3. 外键的名字不能重复。
4. 已经存在数据的字段被设为外键时,必须保证字段中的数据与父表的主键数据对应起来。
二、新增外键
1. 在创建时增加
create table my_tab1(
id int primary key auto_increment,
name varchar(10) not null,
class int,
foreign key(class) references my_tab2;
)charset utf8;
2. 在创建好的表中增加
alter table my_tab1 add [constraint 外键名] foreign key(外键字段名) references mytab2(主键字段名);
三、删除外键
alter table my_tab drop foreign key 外键名字;
以上是关于Oracle一个字段的的外键可以当另一个字段的主键吗的主要内容,如果未能解决你的问题,请参考以下文章