Oracle中给表添加删除主外键约束

时间:2022-09-21 00:26:03

---创建表t_user,其中userid为主键

create table t_user(

userid nubmer constraint pk_user primary key,

username varchar2(15),

age number

)


1.在建表的时候添加外键约束

----创建表t_role,其中rid为主键,并为其中的userid添加与表t_user(userid)的外键约束

1).

create table t_role(
rid number constraint pk_role primary key,
rname varchar2(15),
userid number,
foreign key(userid) references t_user(userid)  
)

2).或者自定义外键约束名,并设置对父表删除的时候级联将子表t_role中相应的记录设置为空

create table t_role(
rid number constraint pk_role primary key,
rname varchar2(15),
userid number  constraint fk_user_role  references t_user(userid)  on delete set null
)


2.在创建表之后为表添加主外键约束

-----创建表t_role,其中rid为主键

create table t_role(

rid number primary key,

rname varchar2(15),

userid number

)

-----为表添加主键约束

   1)创建主键时使用系统自动生成的主键名

alter table t_role 

add primary key(rid)

   2)创建主键时自定义主键名

alter table t_role 

add constraint pk_role primary key(rid)

-----为表t_role(userid)添加表t_user(userid)的外键约束

   1)创建外键时使用系统自动生成的外键名

alter table t_role

add  foreign key(userid)

references t_user(userid)

   2)创建外键时自定义外键名称

alter table t_role

add constraint fk_role_user foreign key(userid)

references t_user(userid)

-----设置级联只需在外键约束语句后面添加on delete cascade,或者on delete set null

例如:

alter table t_role

add constraint fk_role_user foreign key(userid)

references t_user(userid) on delete cascade


3.删除表中的主外键约束

----删除主键约束

alter table t_role

drop primary key

---或者通过主键名删除

alter table t_role

drop constraint pk_role

----删除表t_role中的外键约束

alter table t_role

drop constraint fk_role_user