发布网友 发布时间:2022-05-02 22:48
共3个回答
热心网友 时间:2022-05-03 00:17
选择答案B,带有for update子句的select语句可以在表上的一行或多行上放置排他锁。
排他锁(Exclusive Locks,简称X锁),又称为写锁、独占锁,是一种基本的锁类型。
若事务T对数据对象A加上排他锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。
扩展资料:
SQL语句中select的格式:
SELECT 列名称 FROM 表名称,以及SELECT * FROM 表名称。注意:SQL 语句对大小写不敏感。SELECT 等效于 select。
SELECT语句内部各组成部分的理论计算顺序,依次为:
1、FROM的表连接、笛卡尔积、ON连接条、筛选(完成了内部连接)、添加外部连接的行
2、WHERE子句筛选出满足条件的行集;
3、GROUP BY子句对行集中的行做分组合并,使得多个行对应于结果集中的一行。
4、应用HAVING子句从中间结果筛选出满足条件的行的集合;
5、SELECT的结果列中的表达式,然后是DISTINCT关键字处理(如果有的话)。因此,在SELECT中给结果集中的列指定别名,是无法被WHERE子句或者GROUP BY子句或者HAVING可见并使用的。
6、应用ORDER BY子句对结果集中的行排序。
7、如果存在TOP或OFFSET/FETCH,对结果行的挑选。
参考资料来源:百度百科-select()
热心网友 时间:2022-05-03 01:35
选B。forupdate是一种行级锁,又叫排它锁,一旦用户对某个行施加了行级加锁,则该用户可以查询也可以更新被加锁的数据行,其它用户只能查询但不能更新被加锁的数据行。如果其它用户想更新该表中的数据行,则也必须对该表施加行级锁。
即使多个用户对一个表均使用了共享更新,但也不允许两个事务同时对一个表进行更新,真正对表进行更新时,是以独占方式锁表,一直到提交或复原该事务为止。行锁永远是独占方式锁。
扩展资料:
通常情况下,select语句是不会对数据加锁,妨碍影响其他的DML和DDL操作。同时,在多版本一致读机制的支持下,select语句也不会被其他类型语句所阻碍。
而select … for update 语句是我们经常使用手工加锁语句。在数据库中执行select … for update ,大家会发现会对数据库中的表或某些行数据进行锁表,在mysql中,如果查询条件带有主键,会锁行数据,如果没有,会锁表。
由于InnoDB预设是Row-Level Lock,所以只有「明确」的指定主键,MySQL才会执行Row lock (只锁住被选取的资料例) ,否则MySQL将会执行Table Lock (将整个资料表单给锁住)。
热心网友 时间:2022-05-03 03:10
B