一、原题
二、题目翻译
三、题目解析
Which statements are true regarding the FOR UPDATE clause in a SELECT statement? (Choose all that apply.)
A. It locks only the columns specified in the SELECT list.
B. It locks the rows that satisfy the condition in the SELECT statement.
C. It can be used only in SELECT statements that are based on a single table.
D. It can be used in SELECT statements that are based on a single or multiple tables.
E. After it is enforced by a SELECT statement, no other query can access the same rows until a COMMIT or ROLLBACK is issued.
答案:BD
A. It locks only the columns specified in the SELECT list.
B. It locks the rows that satisfy the condition in the SELECT statement.
C. It can be used only in SELECT statements that are based on a single table.
D. It can be used in SELECT statements that are based on a single or multiple tables.
E. After it is enforced by a SELECT statement, no other query can access the same rows until a COMMIT or ROLLBACK is issued.
答案:BD
二、题目翻译
关于FOR UPDATE子句哪句话是正确的(选择所有正确的选项)
A. 只锁定SELECT列表中指定的列。
B. 锁定SELECT语句中满足条件的行。
C. 只能用于基于单个表的SELECT语句中。
D. 可以用于基于单个表或多个表的SELECT语句中。
E. 使用SELECT语句执行之后,其它查询直到执行COMMIT或ROLLBACK后才能访问相同的行。
A. 只锁定SELECT列表中指定的列。
B. 锁定SELECT语句中满足条件的行。
C. 只能用于基于单个表的SELECT语句中。
D. 可以用于基于单个表或多个表的SELECT语句中。
E. 使用SELECT语句执行之后,其它查询直到执行COMMIT或ROLLBACK后才能访问相同的行。
三、题目解析
A选项不正确,oracle中有行锁和表锁,没有列锁,所以,不会只锁定相关的列。
B选项正确,for update语句,会锁定select出来的相关的行。
C选项不正确,select ... for update可以用于基于一张表,也可以基于多张表。
D选项正确。
E选项,for update语句执行之后,其它查询不能变更这些相关的行,但是不影响查询(select)。
B选项正确,for update语句,会锁定select出来的相关的行。
C选项不正确,select ... for update可以用于基于一张表,也可以基于多张表。
D选项正确。
E选项,for update语句执行之后,其它查询不能变更这些相关的行,但是不影响查询(select)。