1z0-062 题库解析3

本文探讨了Oracle数据库中使用FOR UPDATE子句进行行级锁定的机制,解释了如何通过此功能防止其他会话修改被选中的行,特别是在事务未提交前。文章详细说明了在不同场景下,如插入新记录或获取表的独占锁时,会如何受到已加锁行的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:
The hr user executes the following query on the employees table but does not issue commit, rollback, or any data definition language (DDL) command after that:

SQL> SELECT job
FROM employees
WHERE job=‘CLERK’ FOR UPDATE OF empno;

HR then opens a second session.
Which two operations wait when executed in HR’s second session?

A.INSERT INTO employees(empno,ename,job) VALUES (2001,‘Harry’,‘CLERK’);
B. LOCK TABLE employees IN EXCLUSIVE MODE;
C. SELECT empno,ename FROM employees WHERE job=‘CLERK’;
D. SELECT job FROM employees WHERE job=‘CLERK’ FOR UPDATE OF empno;
E. INSERT INTO employees(empno,ename) VALUES (1289,‘Dick’);

Answer: BD

【解析】
使用FOR UPDATE子句可以锁定选定的行,以便其他用户在结束事务之前不能锁定或更新该行。只能在顶级SELECT语句中指定此子句,而不能在子查询中指定此子句。
加上OF … column子句仅锁定联接中特定表或视图的选择行。OF子句中的列仅指示锁定的表或视图行,您指定的特定列并不重要。 但是,必须指定实际的列名,而不是列别名。如果省略此子句,则数据库将锁定查询中所有表中的选定行。
【官方手册】
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/SELECT.html#GUID-CFA006CA-6FF1-4972-821E-6996142A51C6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值