zoukankan      html  css  js  c++  java
  • [转]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
  • 相关阅读:
    项目源码--Android即时通讯IM客户端
    项目源码--Android美图秀秀源码
    实例源码--IOS高仿微信打飞机游戏(完整功能)
    项目源码--IOS自定义视频播放器
    精品教程--IOS零基础开发环境搭建
    项目源码--Android答题类游戏源码
    项目源码--Android类似酷狗音乐播放器
    项目源码--JSP在线客服系统(SSH框架技术)源码
    项目源码--JAVA基于LBS地理位置信息应用的服务端
    项目源码--Android视频MV类网站客户端
  • 原文地址:https://www.cnblogs.com/y0umer/p/3045914.html
Copyright © 2011-2022 走看看