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

使用foregin key contraint更新列可以锁定被引用的表吗?

使用foreign key constraint更新列不会锁定被引用的表。

Foreign key constraint是一种用于维护表之间关系的约束,它确保了引用表中的数据在被引用表中存在。当我们更新包含外键的列时,数据库会检查新的值是否满足外键约束,如果满足则更新成功,否则会抛出错误。

在更新包含外键的列时,并不会对被引用的表进行锁定。被引用的表可以继续进行读取和写入操作,只有在更新涉及到被引用表的数据时,数据库会检查外键约束。

这种设计可以保证数据的完整性和一致性,同时允许并发操作。如果需要对被引用的表进行锁定,可以使用数据库的锁机制来实现,如行级锁或表级锁。

腾讯云提供了多种云数据库产品,如云数据库MySQL、云数据库MariaDB、云数据库SQL Server等,可以满足不同场景下的需求。您可以根据具体的业务需求选择适合的产品。更多关于腾讯云数据库产品的信息,请访问腾讯云官网:https://cloud.tencent.com/product/cdb

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Mysql-4-数据库的基本操作

(3)完全与mysql服务器整合,InnoDB存储引擎在主内存中缓存数据和索引而维持它自己的缓冲池。 (4)支持外键完整性约束(foregin key)。...(3)每个MyISAM表最大索引数是64,这可以通过重新编译来改变。每个索引最大的列数是16个。 (4)最大的键长度是1000字节,也可以通过编译来改变。...对于键超过250字节的情况,一个超过1024字节的键将被用上。 (5)BLOB和TEXT列可以被索引。 (6)NULL值被允许在索引的列中,每个值占每个键的0-1个字节。...MEMORY存储引擎:将表中的数据存储到内存中,为查寻和引用其它数据提供快速访问。特性如下 (1)每个表可以多达32个索引,每个索引16列,以及500字节的最大键长度。...(3)在一个MEMORY表中可以有非唯一键。 (4)使用一个固定的记录长度格式。 (5)不支持BLOB或TEXT列。 (6)在所有客户端之间共享。

94170

mysql经典面试题及答案_常见的SQL面试题

利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引 不同于使用两个单独的索引。...例如可以建立一个对表主键进行分区的表 4、KEY分区:上面Hash模式的一种延伸,这里的Hash Key是Mysql系统产生的 17、行级锁定的优点 1、当在许多线程中访问不同的行时只存在少量锁定冲突...2、回滚时只有少量的更改 3、可以长时间锁定单一的行 18、行级锁定的缺点 1、比页级或表级锁定占用更多的内存 2、当在表的大部分中使用时,比页级或表级锁定速度慢,因为你必须获取更多的锁 3、如果你在大部分数据上经常进行...EXPLAIN的查询结果还会告诉你你的索引主键被如何利用的,你的数据表是如何被搜索和排序 3、当只要一行数据时使用limit 1,Mysql数据库引擎会在找到一条数据后停止搜索,而不是继续往后查找下一条符合记录的数据...包括primary key,unique key,foregin key等 2、index是数据库的物理结构,它只是辅助查询的,它创建时会在另外的表空间(mysql中的innodb表空间)以一个类似目录的结构存储

77420
  • 数据库SQL语言从入门到精通--Part 4--SQL语言中的模式、基本表、视图

    [,表级完整性约束条件> ] ); 注: 如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。...** 4.FOREGIN KEY(外键)约束:** 定义了一个表中数据与另一个表中的数据的联系。...FOREGIN KEY约束指定某一个列或一组列作为外部键,其中包含外部键的表称为子表,包含外部键所引用的主键的表称为父表。...DROP COLUMN 子句用于删除表中的列如果指定了CASCADE短语,则自动删除引用了该列的其他对象如果指定了RESTRICT短语,则如果该列被其他对象引用,关系数据库管理系统将拒绝删除该列 DROP...| CASCADE]; RESTRICT:删除表是有限制的 欲删除的基本表不能被其他表的约束所引用; 如果存在依赖该表的对象,则此表不能被删除 CASCADE:删除该表没有限制 在删除基本表的同时

    2.2K10

    MySQL(六)

    外键操作 增加外键 MySQL 中提供两种方式增加外键: 在创建表时,直接新增外键 基本语法: [constraint {外键名}] foregin key({外键字段}) references {主表...}(主键); 在创建表后,再新增外键 基本语法: alter table {从表名} add [constraint {外键名}] foregin key({外键字段}) references {主表...约束的基本概念 当一个外键产生时,从表会受制于主表数据的存在从而导致数据不能进行某些不符合规范的操作(不能插入主表不存在的数据) 如果一个表被其他表外键引入,那么该表的数据操作就不能随意,必须保证从表数据的有效性...基本语法: add foregin key({外键字段}) references {主表名}(主键) on {约束模式}; 约束模式有三种: district,严格模式,默认,不允许操作 cascade...封锁 封锁粒度 MySQL 中提供了两种封锁粒度: 行级锁 表级锁 应该尽量只锁定需要修改的那部分数据,而不是所有的资源。锁定的数据量越少,发生锁争用的可能就越小,系统的并发程度就越高。

    43210

    四、数据完整性

    实体完整性 实体是现实世界中的某个对象,在RDBMS中一行数据代表一个实体。实体完整性就是保证每个实体都能被区别。...对于不是主键字段但是也需要唯一性约束的,我们可以在定义表字段的时候在需要唯一性约束的字段后面加上unique。...参照完整性 主要是表与表之间的关系,可以通过外键foregin key来实现。要求关系中不允许引用不存在实体。...定义外键的方法如下:: #学生表 create table student( stu__no int not null primary key comment '学号', stu_name...域完整性约束 域完整性主要是对列的输入有要求,通过限制列的数据类型、格式或值的范围来实现。是针对某一具体关系数据库的约束条件,它保证表中的某些列不能输入无效值。

    80530

    (超级详细的SQL基础,你还不会的话就别学数据库了)

    [,表级完整性约束条件> ] ); 注: 如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。...** 4.FOREGIN KEY(外键)约束:** 定义了一个表中数据与另一个表中的数据的联系。...FOREGIN KEY约束指定某一个列或一组列作为外部键,其中包含外部键的表称为子表,包含外部键所引用的主键的表称为父表。...DROP COLUMN 子句用于删除表中的列如果指定了CASCADE短语,则自动删除引用了该列的其他对象如果指定了RESTRICT短语,则如果该列被其他对象引用,关系数据库管理系统将拒绝删除该列 DROP...| CASCADE]; RESTRICT:删除表是有限制的 欲删除的基本表不能被其他表的约束所引用; 如果存在依赖该表的对象,则此表不能被删除 CASCADE:删除该表没有限制 在删除基本表的同时

    72930

    四、数据完整性

    实体完整性 实体是现实世界中的某个对象,在RDBMS中一行数据代表一个实体。实体完整性就是保证每个实体都能被区别。...对于不是主键字段但是也需要唯一性约束的,我们可以在定义表字段的时候在需要唯一性约束的字段后面加上unique。...参照完整性 主要是表与表之间的关系,可以通过外键foregin key来实现。要求关系中不允许引用不存在实体。...定义外键的方法如下: #学生表 create table student( stu__no int not null primary key comment '学号', stu_name...域完整性约束 域完整性主要是对列的输入有要求,通过限制列的数据类型、格式或值的范围来实现。是针对某一具体关系数据库的约束条件,它保证表中的某些列不能输入无效值。

    1K00

    T-SQL语句的基本概念语法

    revoke all        On 数据库      To 用户;--用户权限的撤销 主键约束(primary key constraint):要求主键列数据唯一,并且不允许为空...constraint):某列的默认值 外键约束(foregin key constraint):用于两表间建立关系,需要制定引用主表的那列,哪个表是外键表,就修改哪个表 district 去重 局部变量...:SQL Server编排数据的内部方法,它为SQL Server提供一种方法来编排查询的数据 索引页:数据库存放的数据页,索引页类似于汉语字典中按平阴或笔画排序的目录页 索引的作用:通过使用索引,可以大大提高数据库的检索速度...,触发器执行完成后,自动删除 inserted表:     临时保存了插入或更新后的记录行,可以从inserted表中检查插入的数据是否满足业务需求,如果不满足,则向用户报告错误,并回滚插入操作 deleted...表:     临时保存了删除或更新前的记录行,可以从表中检查被删除的数据是否满足业务需求,如果不满足,则向用户报告错误,并回滚插入操作

    1.4K20

    解读Google分布式锁服务

    Transaction)和锁(Lock)有区别吗?...Percolator利用Bigtable原有的行锁,再加上自己的一些巧妙的做法,实现了分布式锁服务,这就意味着,Google可以实时的更新PB级别的索引库。...最近我们发现Google的搜索结果时效性很好,刚写好的文章,几分钟之后,Google就可以检索到,原因就在Google的Crawler在抓到新的网页之后,不用再等待一定的时间批量更新索引,而是实时的更新...下面的这个例子是把UserA的人气分减掉10,加到UserB的人气分上,key表示每一行的key,data,lock,write是列名字,data存储数据,lock存储锁状态,write表示事务提交后的数据位置引用...事务的提交 事务的提交的过程分两步,以UserA为例: 首先,在write列写入新数据的位置引用,注意不是数据,是引用(理解成指针会更形象),上面step3A 中t3:data:t2表示在t3时刻提交的数据

    51020

    MySQL深入浅出(二):索引的设计原则、SQL优化、MySQL日志、备份与恢复

    如果表被其他线程锁定,则当前线程会等待,直到可以获取所有锁定为止 ?...这时要提高性能,可通过检验WHERE子句,看是否引用某些字段,或者检查字段不是适合索引 key: 显示MySQL实际决定使用的索引。...如果没有索引被选择,是NULL key_len: 使用到索引字段的长度 注:key_len显示的值为索引字段的最大可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的...ref: 显示哪个字段或常数与key一起被使用 rows: 这个数表示mysql要遍历多少数据才能找到,表示MySQL根据表统计信息及索引选用情况,估算的找到所需的记录所需要读取的行数,在innodb...优化insert语句,如果同时从同一个客户端插入多行,应尽量使用多个值表的insert语句,这种方式大大缩减客户端与数据库之间的连接、关闭等消耗 优化嵌套查询:有些情况下,子查询可以被更有效的连接

    1.1K21

    2020最新版MySQL数据库面试题(二)

    表级锁 表级锁是MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持。最常使用的MYISAM与INNODB都支持表级锁定。...,锁定一个范围,不包括记录本身 Next-key lock:record+gap 锁定一个范围,包含记录本身 相关知识点: innodb对于行的查询使用next-key lock Next-locking...2、在同一个事务中,尽可能做到一次锁定所需要的所有资源,减少死锁产生概率; 3、对于非常容易产生死锁的业务部分,可以尝试使用升级锁定颗粒度,通过表级锁定来减少死锁产生的概率; 如果业务处理不好可以用分布式事务锁或者使用乐观锁...但是,视图并不在数据库中以储存的数据值形式存在。行和列数据来自定义视图的查询所引用基本表,并且在具体引用视图时动态生成。...FOREIGN KEY: 用于预防破坏表之间连接的动作,也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

    63520

    2020最新版MySQL数据库面试题(二)

    表级锁 表级锁是MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持。最常使用的MYISAM与INNODB都支持表级锁定。...,不包括记录本身 Next-key lock:record+gap 锁定一个范围,包含记录本身 相关知识点: innodb对于行的查询使用next-key lock Next-locking keying...2、在同一个事务中,尽可能做到一次锁定所需要的所有资源,减少死锁产生概率; 3、对于非常容易产生死锁的业务部分,可以尝试使用升级锁定颗粒度,通过表级锁定来减少死锁产生的概率; 如果业务处理不好可以用分布式事务锁或者使用乐观锁...但是,视图并不在数据库中以储存的数据值形式存在。行和列数据来自定义视图的查询所引用基本表,并且在具体引用视图时动态生成。...FOREIGN KEY: 用于预防破坏表之间连接的动作,也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。 CHECK: 用于控制字段的值范围

    64121

    最近的面试都在问些什么?

    go引用类型有哪些? 指针、slice、map、channel、interface,上述引用类型不可比较,值类型可以比较。 两个结构体可以进行等值比较吗?...垃圾回收器从根节点开始遍历,查找所有可以访问到的对象,标记为可达,没有被标记的就是垃圾对象,可以被回收。 写一个方法的时候是传值好还是结构体好?...灵活:允许数据库为不同的查询条件创建不同的索引; 覆盖索引:直接从非聚簇索引中获取所有需要的数据,而不需要回表到聚簇索引; 多列索引:提高多列查询的效率; 顺序访问:非聚簇索引的叶子节点通常是有序的,顺序访问可以通过预读等技术减少磁盘...InnoDB存储引擎:默认使用行锁,当对某一行数据操作时,锁定行而不是整个表;当全表扫描时使用表锁,如果事务涉及的操作无法通过行锁实现,也会使用表锁; MyISAM存储引擎:只支持表锁,每次写操作会锁定整个表...惰性删除:当一个过期的key被访问时,Redis会检查它是否过期,如果过期会删除这个key; 定期删除:定期检查过期的key并删除它们; 不是,删除key是由Redis的主线程在事件循环中处理,删除操作是同步的

    12510

    SQL命令 UPDATE(三)

    此设置不适用于用NOCHECK关键字定义的外键。 在UPDATE操作期间,对于每个具有更新字段值的外键引用,都会在被引用表中的旧(更新前)引用行和新(更新后)引用行上获得共享锁。...这些行在执行引用完整性检查和更新行时被锁定。 然后释放锁(直到事务结束才持有锁)。 这确保了引用的行不会在引用完整性检查和更新操作完成之间发生更改。...锁定旧行可以确保在可能的UPDATE回滚之前不会更改所引用的行。 锁定新行可以确保引用的行不会在引用完整性检查和更新操作完成之间发生更改。...权限 要执行更新,必须对指定的表(或视图)具有表级update权限,或者对指定的列具有列级update权限。...您可以通过调用%CHECKPRIV命令来确定当前用户是否具有适当的特权。 可以使用GRANT命令分配用户表权限。 当属性被定义为ReadOnly时,相应的表字段也被定义为ReadOnly。

    1.6K20

    图文实例解析,InnoDB 存储引擎中行锁的三种算法

    如果表在建立的时候没有设置任何一个索引,那么这时 InnoDB 存储引擎会使用 “隐式的主键” 来进行锁定。...所谓隐式的主键就是指:如果在建表的时候没有指定主键,InnoDB 存储引擎会将第一列非空的列作为主键;如果没有的话会自动生成一列为 6 字节的主键。...可以看见,由于锁住的是不同的记录行,所以两个记录锁并没有相互排斥,来看一下现在表中的数据,由于事务 1 还没有 commit,所以应该是只有 id = 2 的 username 被修改了: ?..., 13] (13, 20] (20, +∞] 细心的同学应该已经注意到了,和 Gap Lock 的不同之处就在于,Next-Key Lock 锁定的区间是左开右闭的,也就是说它是包含当前被操作的索引记录的...若唯一索引由多个列组成,而操作的仅是多个唯一索引列中的其中一个,那么 InnoDB 存储引擎依然使用 Next-Key Lock 进行锁定。 ?

    1.1K30

    MySQL binlog 为 statement 格式考虑是不安全(slave端不一致)的操作

    因此,在MySQL中,所有依赖于全文插件的语句都被视为不安全。 触发器或存储的程序将更新具有AUTO_INCREMENT列的表。  这是不安全的,因为在主服务器和从服务器上,行的更新顺序可能不同。...此外,INSERT到包含复合主键的表中的表AUTO_INCREMENT是不安全的,该主键包含的 列不是该复合键的第一列。...当对包含多个主键或唯一键的表执行该语句时,该语句被认为是不安全的,它对存储引擎检查键的顺序(不确定的)以及由行更新的行的选择敏感。 MySQL Server取决于。 INSERT ......ON DUPLICATE KEY UPDATE针对具有多个唯一键或主键的表 的 语句对于基于语句的复制被标记为不安全。(缺陷#11765650,错误#58637) 使用LIMIT更新。  ...未指定行的检索顺序,因此被认为是不安全的。请参见 第17.5.1.18节“复制和限制”。 访问或引用日志表。  主服务器和从服务器之间的系统日志表的内容可能有所不同。 交易操作之后的非交易操作。

    66810

    再谈mysql锁机制及原理—锁的诠释

    事务B更新表时,其实无须知道到底哪一行被锁了,它只要知道反正有一行被锁了就行了。...事务需要更新大部分或全部数据,表又比较大,如果使用默认的行锁,不仅这个事务执行效率低,而且可能造成其他事务长时间锁等待和锁冲突,这种情况下可以考虑使用表锁来提高该事务的执行速度。...当一个线程获得对一个表的写锁后, 只有持有锁的线程可以对表进行更新操作。 其他线程的读、 写操作都会等待,直到锁被释放为止。...如果你使用LOCK TABLES显式获取表锁,则可以请求READ LOCAL锁而不是READ锁,以便在锁定表时,其他会话可以使用并发插入。...当前系统的隔离级别是什么? id列如果不是主键,那么id列上有索引吗? id列上如果有二级索引,那么这个索引是唯一索引吗? 两个SQL的执行计划是什么?索引扫描?全表扫描?

    1.5K01

    10个非常实用的Excel技巧

    简直是疯了…这要浪费多少时间你知道吗?其实有一个简单的技巧,就是在你选定单元格之后,按F4键输入美元符号并锁定;如果你继续按F4,则会向后挨个循环:锁定单元格、锁定数字、锁定大写字母、解除锁定。 ?...此处我们可以看到一个数据表,第一列是法学院排名。我们可以用VLOOKUP来创建一个排名前五的学校的查询。...9.用“&”合并单元格 我们现在拥有一列姓和一列名,我们可以使用“&”符号来创建一列合并姓和名的数据。在Excel中,“&”指将两个或两个以上的文本合并。别忘了在姓和名中间键入一个空格。...10.用RAND函数生成随机数 你可以使用RAND()函数来生成一个single型的随机数,小于1但大于等于0 。括号内空着就成,无需键入任何参数。新的随机数会随着工作簿的更新而重新生成。...你也可以按F9键来让工作表重新计算一遍从而更新随机数,不过操作的时候记得当心点。 RAND() ?

    1.4K80

    MySQL数据库知识点

    或者说怎么才可以知道这条语句运行很慢的原因? SQL的生命周期? 大表数据查询,怎么优化 超大分页怎么处理? mysql 分页 慢查询日志 关心过业务系统里面的sql耗时吗?统计过慢查询吗?...表级锁 表级锁是MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持。最常使用的MYISAM与INNODB都支持表级锁定。...2、在同一个事务中,尽可能做到一次锁定所需要的所有资源,减少死锁产生概率; 3、对于非常容易产生死锁的业务部分,可以尝试使用升级锁定颗粒度,通过表级锁定来减少死锁产生的概率; 如果业务处理不好可以用分布式事务锁或者使用乐观锁...但是,视图并不在数据库中以储存的数据值形式存在。行和列数据来自定义视图的查询所引用基本表,并且在具体引用视图时动态生成。...TIPS:查询中若使用了覆盖索引(覆盖索引:索引的数据覆盖了需要查询的所有数据),则该索引仅出现在key列表中 key_length 索引长度 ref 表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值

    78320

    select和where子句优化

    ,平衡可移植性和性能 4.合适的结构,合适的数据类型;执行频繁更新的应用程序大量表(少列);分析大量数据的应用程序少量表(多列);选择合适的存储引擎和索引; 5.压缩适用于InnoDB表的各种工作负载,...以及只读MyISAM表 6.选择合适的锁定策略;InnoDB存储引擎可以处理大多数锁定问题 7.配置的主要内存区域是InnoDB缓冲池和MyISAM密钥缓存。...8.优化select语句,这方面技巧同样适用于其他带where的delete语句等,在where子句的列上设置索引;索引对于引用多个列如join和外键尤其重要 select where子句优化: 1.调整查询的结构...通过有效使用InnoDB缓冲池,MyISAM密钥缓存和MySQL查询缓存 8.where条件,去掉不必要的括号,恒定折叠,恒定条件去除,减少不必要的逻辑 9.被索引使用的常量表达式只计算一次 10.count...;where子句作用在primary key或者unique索引上 13.如果ORDER BY和GROUP BY子句中的所有列都来自同一个表,则在连接时首选该表 14.如果order by子句和group

    1.6K30
    领券