当前位置:   article > 正文

个人学习oracle记录——外键篇_oracle外键

oracle外键


一、外键创建

外键是强制实施参照完整性的一种方式
子表中创建外键,引用父表中的键(通常为主键)。
外键创建有两种方法,一种是创建表(CREATE TABLE)的时候顺便把外键也创建了,一种是修改/维护表(ALTER TABLE)的时候创建了。

1.CREATE TABLE

语法:

CREATE TABLE table_name
(
  column1 datatype null/not null,
  column2 datatype null/not null,
  ...

  CONSTRAINT fk_column
    FOREIGN KEY (column1, column2, ... column_n)
    REFERENCES parent_table (column1, column2, ... column_n)
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

子表叫table_namefk_column是子表中外键的名字,该外键引用父表中的column1, column2, … column_n字段。

2.ALTER TABLE

语法:

ALTER TABLE table_name
ADD CONSTRAINT fk_column
   FOREIGN KEY (column1, column2, ... column_n)
   REFERENCES parent_table (column1, column2, ... column_n);
  • 1
  • 2
  • 3
  • 4

同样的,子表叫table_namefk_column是子表中外键的名字,该外键引用父表中的column1, column2, … column_n字段。

二、级联删除外键

指当主表中的一条记录被删除,那么子表中所关联的记录也相应的自动删除。
两种为子表中的外键设置级联删除的方法:CREATE TABLE 和 ALTER TABLE。

1.CREATE TABLE

语法:

CREATE TABLE table_name
(
  column1 datatype null/not null,
  column2 datatype null/not null,
  ...

  CONSTRAINT fk_column
     FOREIGN KEY (column1, column2, ... column_n)
     REFERENCES parent_table (column1, column2, ... column_n)
     ON DELETE CASCADE
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

看得出来,和用CREATE TABLE创建外键的语法基本一样,就是最后多了一句“ON DELETE CASCADE”。顺便学习一下cascade的意思:

cascade 英[kæˈskeɪd] 美[kæˈskeɪd]
n. 大量; 小瀑布(尤指一连串瀑布中的一支); 倾泻; 流注; 大簇的下垂物; 倾泻(或涌出)的东西;
vi. 倾泻; 流注; 大量落下; 大量垂悬;

我自己意会一下,“ON DELETE CASCADE”大概意思是在上流父表水流被引用的键的某条记录)开始倾泻被删掉)之后,下流子表)的水流对应的外键的该条记录)就会被冲刷也被删了)。

2.ALTER TABLE

语法:

ALTER TABLE table_name
ADD CONSTRAINT fk_column
   FOREIGN KEY (column1, column2, ... column_n)
   REFERENCES parent_table (column1, column2, ... column_n);
   ON DELETE CASCADE;
  • 1
  • 2
  • 3
  • 4
  • 5

类似的,加了一句on delete cascade。

三、删除外键

删除子表中的外键字段。
w3cschool讲了两种方法:

alter table  "表名" drop constraint "外键名"alter table  "表名" drop primary key
  • 1
  • 2
  • 3

但是总觉得第二种方法是删除主键用的。查了一些文章,大家删除外键都是用的第一个方法,所以这里记得第一个就行了。

四、禁用外键

我的理解就是让外键失效。
语法:

ALTER TABLE table_name
DISABLE CONSTRAINT fk_column;
  • 1
  • 2

被禁用的外键是,表table_name的外键fk_column

五、启用外键

好好理解,不愿再解释了。语法:

ALTER TABLE table_name
ENABLE CONSTRAINT fk_column;
  • 1
  • 2

总结

这一章就是讲外键的“生平”,从出生到去世,还有中途偶尔玩消失又重新出现,语法都蛮简单的,主要就是理解外键干嘛的和级联是怎么回事就行了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/497505
推荐阅读
相关标签
  

闽ICP备14008679号