zoukankan      html  css  js  c++  java
  • MySql外键约束作用

    NO ACTION
    指定如果试图删除/修改某一行,而该行的键被其他表的现有行中的外键所引用,则产生错误并回滚 DELETE/UPDATE语句。

    CASCADE、SET NULL 和 SET DEFAULT
    允许通过删除或更新键值来影响指定具有外键关系的表,这些外键关系可追溯到在其中进行修改的表。如果为目标表也定义了级联引用操作,那么指定的级联操作也将应用于删除或更新的那些行。不能为具有 timestamp 列的外键或主键指定 CASCADE。

    ON DELETE CASCADE
    指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则也将删除所有包含那些外键的行。

    ON UPDATE CASCADE
    指定如果试图更新某一行中的键值,而该行的键值被其他表的现有行中的外键所引用,则组成外键的所有值也将更新到为该键指定的新值。 (如果 timestamp 列是外键或被引用键的一部分,则不能指定 CASCADE。 )

    ON DELETE SET NULL
    指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为 NULL。目标表的所有外键列必须可为空值,此约束才可执行。

    ON DELETE SET DEFAULT
    指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为它们的默认值。目标表的所有外键列必须具有默认值定义,此约束才可执行。如果某个列可为空值,并且未设置显式的默认值,则会使用 NULL 作为该列的隐式默认值。因 ON DELETE SET DEFAULT 而设置的任何非空值在主表中必须有对应的值,才能维护外键约束的有效性。

    ON UPDATE SET DEFAULT
    指定如果试图更新某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为它们的默认值。目标表的所有外键列必须具有默认值定义,此约束才可执行。如果某个列可为空值,并且未设置显式的默认值,则会使用 NULL 作为该列的隐式默认值。因 ON UPDATE SET DEFAULT 而设置的任何非空值在主表中必须有对应的值,才能维护外键约束的有效性。

  • 相关阅读:
    关于excel导入、导出(POI)
    关于上传图片和显示
    关于sql连接查询(内联、左联、右联、全联)
    关于面试问题
    关于excel导出
    响应式布局和自适应布局的不同
    关于时间范围查询
    HDU 6166 Senior Pan(二进制分组+最短路)
    HUAS 2017暑假第六周比赛-题解
    AtCoder Regular Contest 081
  • 原文地址:https://www.cnblogs.com/wangguanyi/p/14024198.html
Copyright © 2011-2022 走看看