首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL约束删除和更新总结

约束删除/更新行为 行为 说明 NO ACTION 当在父表删除/更新对应记录时,首先检查该记录是否有对应,如果有则不允许删除/更新。...(与NOT ACTION一致) CASCADE 当在父表删除/更新对应记录时,首先检查该记录是否有对应,如果有,则也删除/更新在子表总记录。...主表字段名) on update cascade on delete cascade -- 添加约束并指定删除和更新行为 alter table emp add constraint...-- 添加约束并指定删除和更新行为 alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references...dept(id) on update set null on delete set null ; 测试: 删除dept表第一,然后刷新,我们可以看到emp表id为1数据全部置为null了。

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

MySQL实战七:你不知道约束使用

,用来设置当主键表被参考列数据发生变化时,响应字段变换规则。...学习 cascade 表示级联操作,就是说,如果主键表中被参考字段更新,表(子表)也更新,主键表(父表)记录被删除表(子表)改行也相应删除。...如果没有使用`on delete/update cascade`,不能删除或更新父表数据,当删除父表数据时候报错!...cascade 不能更新父表主键或子表删除父表主键数据会将子表联同删除删除子表数据不影响父表。...而on update只能删除子表数据,不能删除父表主键数据,只能更新父表主键,同时父子表数据都会被更新,但是在子表上做更新操作无效。

4.3K20

MySql数据库约束

在InnoDB存储引擎,域完整性可以通过以下途径来保证:   a. 选择适合数据类型确保一个数据值满足条件   b. (Foreign Key)约束   c. 编写触发器   d....) (3)如果before触发器失败,则MySQl将不执行请求操作,此外如果before触发器或语句本身失败,MySql将不执行after触发器(如果有的话) 3.1.2 触发器删除   DROP...约束 用来保证参照完整性,MySQL数据库MyIsAM存储引擎本身并不支持,对于定义只是起到一个注释作用,而InonoDB存储引擎则完整支持约束。...一般来说,称被引用表为父表,引用表称为子表,定义时on delete和on update表示在对父表进行delete和updata操作时,对子表所做操作。...(4)RESTRICT   表示父表发生delete或update操作时,抛出错误,不允许这类操作发生,如果定义时没有指定on delete或on update,RESTRICT就是默认设置

1.1K10

第17章_触发器

当对数据表数据执行插入、更新和删除操作,需要自动执行一些数据库逻辑时,可以使用触发器来实现。 # 2....为了解决这个问题,我们就可以使用触发器,规定每当进货单明细表有数据插入、修改和删除操作时,自动触发 2 步操作: 1)重新计算进货单明细表数量合计和金额合计; 2)用第一步中计算出来值更新进货单头表合计数量与合计金额...# 4.3 注意点 注意,如果在子表定义了约束,并且键指定了 ON UPDATE/DELETE CASCADE/SET NULL 子句,此时修改父表被引用键值或删除父表被引用记录行时,也会引起子表修改和删除操作...例如:基于子表员工表(t_employee) DELETE 语句定义了触发器 t1,而子表部门编号(did)字段定义了约束引用了父表部门表(t_department)主键列部门编号(did),...并且该加了 “ON DELETE SET NULL” 子句,那么如果此时删除父表部门表(t_department)在子表员工表(t_employee)有匹配记录部门记录时,会引起子表员工表(t_employee

18520

MySQL 学习笔记(三):完整性和触发器设计

*/ /*定义sno为参考student表主键sno,并且实现级联删除更新SC表相应元组 */ /* 提示 foreign key .. references ... on delete...cascade on update cascade, /*定义Cno为参考course表主键Cno,并且实现级联删除SC表相应元组 */ );  2....约束 + 级联(删除/更新) alter table 从表 add constraint 约束名 foreign key(属性名) references 主表(属性名)  ON DELETE CASCADE...删除约束 删除主键约束:alter table 表名 drop primary key; 删除约束:alter table 表名 drop foreign key (区分大小写);...这里我创建时候 sno 中有些表有主键约束,有些却没有,所以当我删除主键约束时候它会提示被错误建立起来了。但我不明白为什么建立时候没有报错。

1.4K40

MySQL触发器

触发器概述  MySQL从 5 . 0 . 2 版本开始支持触发器MySQL触发器和存储过程一样,都是嵌入到MySQL服务器一 段程序。...当对数据表数据执行插入、更新和删除操作,需要自动执行一些数据库逻辑时,可以使用触发器来 实现。...为了解决这个问题,我们就可以使用触发器,规定每当进货单明细表有数据插入、修改和删除操作 时,自动触发 2 步操作: 1)重新计算进货单明细表数量合计和金额合计; 2)用第一步中计算出来值更新进货单头表合计数量与合计金额...注意点 注意,如果在子表定义了约束,并且键指定了ON UPDATE/DELETE CASCADE/SET NULL子句,此时修改父表被引用键值或删除父表被引用记录行时,也会引起子表修改和删除操作...例如:基于子表员工表(t_employee)DELETE语句定义了触发器t1,而子表部门编号(did)字段定义了约束引用了父表部门表(t_department)主键列部门编号(did),并且该加了

3.2K20

数据库对象

因为数据只有一份,试图就是他一种显示形式 试图本省删除,不会导致对基表数据删除。 视图不仅可以创建在一个表或者多个基本表上, 还可以创建在一个或者多个已经定义好视图上。...也就是说,如果一个表某个字段()引用了另一个表一个字段(主键),那么这个键值必须存在于被引用主键表,否则就会违反参照完整性。...触发器又叫事件-条件-动作规则 创建触发器 : CREATE TRIGGER trigger_name {BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_name...[FOR EACH ROW]:指定触发器执行方式,对于每一数据是否执行一次。 [WHEN condition]:指定触发器执行条件,如果条件不满足,则触发器不会执行。...执行该表上BEFORE触发器 2. 执行该表上SQL语句 3. 执行该表上AFTER触发器

10310

学习SQLite之路(三)

重命名列,删除一列,或从一个表添加或删除约束都是不可能。  3. SQLite  joins:用于结合两个或多个数据库中表记录。...一旦主连接计算完成,连接(OUTER JOIN)将从一个或两个表任何未连接合并进来,连接使用 NULL 值,将它们附加到结果表。...,连接使用 NULL 值,将它们附加到结果表。...WHEN 子句和触发器(Trigger)动作可能访问使用表单 NEW.column-name 和 OLD.column-name 引用插入、删除或更新元素,其中 column-name 是从与触发器关联名称...BEFORE 或 AFTER 关键字决定何时执行触发器动作,决定是在关联行插入、修改或删除之前或者之后执行触发器动作。 当触发器相关联删除时,自动删除触发器(Trigger)。

3K70

六年开发经验,整理Mysql数据库技巧笔记,全网最详细笔记集合!

KEY 键名; 建表后单独添加约束 ALTER TABLE 表名 ADD CONSTRAINT 键名 FOREIGN KEY (本表列名) REFERENCES 主表名(主键列名); 级联更新和级联删除...DROP FUNCTION 函数名称; 触发器 触发器是与表有关数据库对象,可以在 insert、update、delete 之前或之后触发并执行触发器定义 SQL 语句。...触发器分类 创建触发器 DELIMITER $ CREATE TRIGGER 触发器名称 BEFORE|AFTER INSERT|UPDATE|DELETE ON 表名 FOR EACH ROW BEGIN...MyISAM 存储引擎:访问快,不支持事务和操作。使用场景:以查询操作为主,只有很少更新和删除操作,并且对事务完整性、并发性要求不是很高!...InnoDB 存储引擎:支持事务和操作,支持并发控制,占用磁盘空间大。(MySQL 5.5版本后默认) 使用场景:对事务完整性有比较高要求,在并发条件下要求数据一致性,读写频繁操作!

1.4K20

Mysql数据库基础知识总结,结构分明,内容详细

前提条件:这些一起查询表之间是有关系(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了,也可能没有建立。...PRIMARY KEY 主键(非空且唯一)约束 FOREIGN KEY 约束 CHECK 检查约束 DEFAULT 默认值约束 c.如何指定自增约束 特点和要求 (1)一个表最多只能有一个自增长列...a.触发器创建 创建触发器语法 CREATE TRIGGER 触发器名称 {BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表名 FOR EACH ROW 触发器执行语句块...注意,如果在子表定义了约束,并且键指定了ON UPDATE/DELETE CASCADE/SET NULL子句,此 时修改父表被引用键值或删除父表被引用记录行时,也会引起子表修改和删除操作...例如:基于子表员工表(t_employee)DELETE语句定义了触发器t1,而子表部门编号(did)字段定 义了约束引用了父表部门表(t_department)主键列部门编号(did),并且该加了

53130

SQL表之间关系

SQL表之间关系要在表之间强制执行引用完整性,可以定义。修改包含约束表时,将检查约束。定义有几种方法可以在InterSystems SQL定义:可以定义两个类之间关系。...默认情况下,当删除带有行时,InterSystems IRIS将在相应被引用表上获取长期(直到事务结束)共享锁。这样可以防止在引用DELETE事务完成之前对引用行进行更新或删除。...这样可以防止删除引用,然后回退删除引用情况。如果发生这种情况,将引用不存在。...如果使用NoCheck定义,或者使用%NOCHECK或%NOLOCK指定引用DELETE,则不会获取此锁定。...例如,如果删除操作因违反引用完整性而不能执行,则不会执行BEFORE DELETE触发器。在父/子关系,没有定义子元素顺序。 应用程序代码不能依赖于任何特定顺序。

2.4K10

MySQL系列专题(2)-MySQLSQL语句和高级特性

,则不允许对父表对应候选进行update/delete操作 Restrict 同no action, 都是立即检查约束 Set null 在主表上update/delete记录时,将子表上匹配记录列设为...null 注: trigger不会受cascade行为影响,即不会触发trigger NULL、RESTRICT、NO ACTION 删除:从表记录不存在时,主表才可以删除。...trigger_stmt:触发器程序体,可以是一条SQL语句或者是用BEGIN和END包含多条语句 所以可以说MySQL创建以下六种触发器BEFORE INSERT,BEFORE DELETE...4、约束:foreign key ;保证一个表数据匹配另一个表参照完整性。...不使用索引 1.查询很少使用列 不应该创建索引,如果建立了索引然而还会降低mysql性能和增大了空间需求. 2.很少数据列也不应该建立索引,比如 一个性别字段 0或者1,在查询,结果集数据占了表数据比例比较大

3.7K10

oracledelete drop truncate用法和区别

下面我们具体了解一下这三个命令:  一、delete 1、delete是DML,执行delete操作时,每次从表删除,并且同时将该行删除操作记录在redo和undo表空间中以便进行回滚(rollback...3、对于(foreignkey )约束引用表,不能使用truncate table,而应使用不带where子句 delete 语句。...2、drop语句删除表结构及所有数据,并将表所占用空间全部释放。 3、drop语句将删除结构所依赖约束触发器,索引,依赖于该表存储过程/函数将保留,但是变为invalid状态。...不能 truncate 一个带有 enable 表,不管表里有没有数据,如果要 truncate,首先要 disable 或者删除(drop 表肯定是删除)。...不能 drop 一个带有 enable 表,不管表里有没有数据,如果要 drop,首先要删除,或者直接用 drop table TABLE_NAMEcascade constraints; 级联删除

2.3K20

MySQL扩展

实现思路:通过定义一个变量,查询到一数据就对变量 +1; 使用@关键字创建“用户变量”; mysql变量不用事前申明,在用时候直接用“@变量名”。...语法 -- drop index 约束名 on 表名 drop index uk_emp_name_nick on employees_tem 4.3 约束 delete级联删除和级联置空 4.3.1...,删除部门表数据,自动将所有关联表数据,一并删除 delete from departments_temp1 where dept_id = 100; -- 再次查询数据: select...,删除部门表数据,自动将所有关联表数据,一并置空 delete from departments_temp2 where dept_id = 200; select * from employees_temp5...,真实姓名和昵称是组合唯一 constraint uk_emp_name_nick unique(emp_name,emp_nick), -- 使用表级声明,增加部门编号约束,并指定级联更修改

1.9K30

mysql常用语句大全_什么是SQL语句

table store drop primary key ## 删除约束 (删除需要带上键名称) alter table store drop foreign key PK_STUDENT_CLASS...唯一–在任意一张表添加一个字段添加约束与另一张表主键关联,并将添加唯一约束。...## 一对多,多对一 # 1.设置–在多一方表添加一个字段添加约束与另一张表主键关联。 ## 多对多 # 1.新建关系表–在关系表定义两个,分别与两个数据表主键相关联。...-级联操作 在创建时 添加 级联操作 on update cascade(级联修改) on delete cascade (级联删除) alter table student add constraint...# 触发器定义 create trigger --定义触发时机 <insert|delete|update

79320

MySQLMariaDB触发器详解

MySQL/MariaDB触发器只支持触发器(即每行都触发一次触发器),不支持数据库级别和服务器级别的触发器。...MySQL/MariaDB触发器虽然都是基于表,却存储在数据库下,理解这一点很重要,以后查看、删除、引用trigger时候都是通过数据库名称来引用,而不是使用表来引用。...在MySQL/MariaDB使用old和new表分别表示触发器激活后新旧表,在SQL Server中使用是inserted和deleted表,其实它们意义是等价。...有两类insert触发器before和after触发器,分别表示表记录被删除之前和表数据被删除之后激活触发器。 注意,delete触发器只在表记录被删除时候才会被激活。...现在删除emp表记录进行测试。 delete from emp where emp_no=10; 删除emp表数据之后,查看audit表。

1.7K20

盘点MySQL数据库数据类型、库和表常见操作、索引、视图、函数等知识点

前言 在日常开发,存储数据最常用方式便是数据库了,其中最为著名便是MySQL数据库,因它简便易于上手而且可扩展性强大,跨平台使得它广为使用。...(形如:FK_从表_主表) FOREIGN KEY 从表(字段) REFERENCES 主表(主键字段); 删除主键约束:alter TABLE 表名 DROP PRIMARY KEY; 删除约束...:alter TABLE 表名 DROP FOREIGN KEY (区分大小写); -- 添加约束 CREATE TABLE stu(sid INT PRIMARY KEY,NAME VARCHAR...UPDATE:更新操作触发器,UPDATE操作时触发; trigger_event 触发事件,如插入时触发、删除时触发;DELETE删除操作触发器DELETE、REPLACE操作时触发;...END 触发执行语句内容(trigger_body)OLD,NEW 触发执行语句内容(trigger_body)OLD,NEW:在trigger_body, 我们可以使用NEW表示将要插入

1.6K30

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券