• [转]mysql如何设置主键和外键,实现级联更新、级联删除


    主键、外键和索引的区别?

      主键 外键 索引
    定义: 唯一标识一条记录,不能有重复的,不允许为空 表的外键是另一表的主键外键可以有重复的可以是空值 该字段没有重复值,但可以有一个空值
    作用: 用来保证数据完整性 用来和其他表建立联系用的 是提高查询排序的速度
    个数: 主键只能有一个 一个表可以有多个外键 一个表可以有多个惟一索引

    设置索引

    若要设置外键,在参照表(pc表)  和被参照表(parts表)中,相对应的两个字段必须都设置索引(index)。

    对parts表:

    ALTER TABLE parts ADD INDEX idx_model (model);
    这句话的意思是,为parts表增加一个索引,索引建立在model字段上,给这个索引起个名字叫idx_model。

    对pc表也类似:

    ALTER TABLE pc ADD INDEX idx_cpumodel (cpumodel);

    定义外键

    下面为两张表之间建立前面所述的那种“约束”。因为pc的CPU型号必须参照parts表中的相应型号,所以我们将pc表的cpumodel字段设置为“外键”(FOREIGN KEY),即这个键的参照值来自于其他表。

    ALTER TABLE pc ADD CONSTRAINT fk_cpu_model

    FOREIGN KEY (cpumodel)

    REFERENCES parts(model);

    级联操作

    级联更新:更新主键时,外键也随之更新

    可以在定义外键的时候,在最后加入这样的关键字:
    ON UPDATE CASCADE;

    即在主表更新时,子表(们)产生连锁更新动作,似乎有些人喜欢把这个叫“级联”操作。

    如果把这语句完整的写出来,就是:

    ALTER TABLE pc ADD CONSTRAINT fk_cpu_model

    FOREIGN KEY (cpumodel)

    REFERENCES parts(model)

    ON UPDATE CASCADE;

    级联删除:删除主键时,外键也随之删除。

    ALTER TABLE pc ADD CONSTRAINT fk_cpu_model

    FOREIGN KEY (cpumodel)

    REFERENCES parts(model)

    ON DELETE CASCADE;

    级联更新、删除:

     on update cascade on delete cascade

    原文出处:http://www.phpdadao.com/386.html
  • 相关阅读:
    爬虫面试资料
    python高级知识
    Python2和Python3的字符串编码和类型
    cookie和session-csrf防护-中间件
    [干货]弄清楚迭代器, 生成器概念/作用
    MySQL中四种常用存储引擎的介绍
    python常见面试集合
    [MongoDB教程] 2.MongoDB的安装与使用
    深入理解:线程,进程,协程和并行,并发-协程
    [MongoDB教程] 1.简介
  • 原文地址:https://www.cnblogs.com/y0umer/p/3045914.html
Copyright © 2020-2023  润新知