首页
学习
活动
专区
圈层
工具
发布

MySQL实战七:你不知道的外键与约束使用!

update 则是主键表中被参考字段的值更新,delete是指在主键表中删除一条记录: on update 和 on delete 后面可以跟的词语有四个:no action , set null ,...no action 表示 不做任何操作, set null 表示在外键表中将相应字段设置为null set default 表示设置为默认值(restrict) (1)on delete cascade...如果没有使用`on delete/update cascade`,不能删除或更新父表数据,当删除父表的数据时候报错!...上述on delete cascade换成on update cascade,可以发现只能更新父表的主键,同时父子表数据都会被更新,但是在子表的外键上做更新操作无效!...如果没有使用on delete/update cascade,不能删除或更新父表数据。

4.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    外键约束

    | cascade | set null | on action }]             [on update {restrict | cascade | set null | on action...}]     该语法可以在create table 和 alter table时使用,如果不指定 constraint 外键名 ,mysql会自动生成一个名字,可以通过 show create...cascade                 on update cascade); 解除外键:alter table 表名 drop foreign key 外键名;   注意:删除外键后发现...cascade: on delete cascade on update cascade         当主表删除记录或更改被参照字段的值时,从表会级联更新 :这个比较危险,容易级联把数据都删除...set null: on delete set null on update set null         当主表删除记录时,从表外键字段值变成 null         当主表更新主键字段值时,

    2.6K20

    【重学 MySQL】六十九、揭秘级联约束,让你的数据库关系更智能、更强大!

    级联约束的类型 在MySQL中,级联约束主要通过ON DELETE和ON UPDATE子句来实现,具体类型包括: CASCADE: ON DELETE CASCADE:当主表中的数据被删除时,关联表中的相关数据也会被自动删除...SET NULL: ON DELETE SET NULL:当主表中的数据被删除时,关联表中的相关数据会被设置为NULL。需要注意的是,子表的外键列不能为NOT NULL约束。...ON UPDATE SET NULL:当主表中的数据被更新时(实际上这种操作并不常见,因为通常更新操作会保持外键关系的有效性),理论上关联表中的相关数据可以被设置为NULL,但这种用法并不推荐,因为可能会导致数据不一致...在MySQL的实际操作中,ON UPDATE SET NULL并不是一种常见的级联更新方式。...因此,在使用级联删除时应格外小心,可以考虑使用SET NULL或SET DEFAULT(如果支持)作为替代方案。 综上所述,级联约束是MySQL中维护数据完整性和一致性的重要机制。

    44110

    MYSQL回顾(完整性约束相关)

    > set session auto_increment_increment=5; 设置全局级别步长 注意:设置全局级别步长需要退出本次会话再次登录才生效 mysql> set global auto_increment_increment...mysql> set global auto_increment_offset=3; 不连续主键 +----+--------------+------------+ | id | title...4.更新数据 强行更新被关联表中的记录的主键也会报错,因为关联表中还存在一些记录的外键指向被关联表 update dep set id=333 where id=3; 解决方案 创建关联表(员工表)的时候增加删除同步和更新同步...on delete cascade on update cascade mysql> create table emp( -> id int not null primary key,...cascade -> on update cascade -> ); Query OK, 0 rows affected (0.02 sec) 注意:下图红框中换行无逗号 因为同属于一句

    6K20

    MySQL外键使用详解--Java学习网

    最近有开始做一个实验室管理系统,因为分了几个表进行存储・所以要维护表间的关联・・研究了一下MySQL的外键。...和on update , 可设参数cascade(跟随外键改动), restrict(限制外表中的外键改动),set Null(设空值),set Default(设默认值),[默认]no action...cascade on update cascade); 说明:把id列 设为外键 参照外表outTable的id列 当外键的值删除 本表中对应的列筛除 当外键的值改变 本表中对应的列值改变。...代码如下: create table temp( id int, name char(20), foreign key(id) references outTable(id) on delete cascade...on update cascade); 缺点:在对MySQL做优化的时候类似查询缓存,索引缓存之类的优化对InnoDB类型的表是不起作用的,还有在数据库整体架构中用得同步复制也是对InnoDB类型的表不生效的

    1.1K40

    MYSQL-外键(Foreign Key)

    三、外键约束的规则与引用操作 当你定义外键时,可以指定当主表中的数据被更新(UPDATE)或删除(DELETE)时,对从表中的数据应该执行什么操作。这是外键最强大的功能所在。...ON DELETE CASCADE:删除主表中的记录时,自动删除从表中所有相关联的记录。 ON UPDATE CASCADE:更新主表主键的值时,自动更新从表中所有相关外键的值。...示例:ON DELETE CASCADE 设定后,删除一个部门,该部门下的所有员工记录也会被自动删除。此操作非常危险,需谨慎使用! 3. SET NULL 含义:设置为空。...) REFERENCES departments(department_id) ON DELETE SET NULL ON UPDATE CASCADE...SET NULL:当被引用的部门被删除时,将此字段设为 NULL ON UPDATE CASCADE:当被引用的部门ID更新时,自动更新所有相关的员工记录

    25110
    领券