暂无图片
oracle sql问题 有选项求解答
我来答
分享
2023-12-27
oracle sql问题 有选项求解答
暂无图片 25M

Table HR.EMPLOYEES contains a row where the EMPLOYEE_ID is 109

User ALICE has no privileges to access HR.EMPLOYEES.

User ALICE starts a session. 

User HR starts a session and successfully executes these statements: 

 GRANT DELETE ON employees TO alice;

UPDATE employees SET salary = 24000 WHERE employee_id = 109;

In her existing session ALICE then executes:

DELETE FROM hr.employees WHERE employee_id = 109;

What is the result?

A.The command will immediately return an error.

B.The command will wait for HR's transaction to end then delete the row.

C.The command will wait for HR's transaction to end then return an error.

答案给的是A 我感觉是B  求大佬解答

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
伟鹏

一个语句的执行应该是:首先语法语义的判断,之后是用户权限的判断,再之后就是获取锁的过程吧?

暂无图片 评论
暂无图片 有用 1
暂无图片
伟鹏

答案是A

如果你想删除一个表里的数据,除了具有delete权限之外,你还得有select权限

暂无图片 评论
暂无图片 有用 2
题主
2023-12-27
哦哦,那流程不应该是,要先等待事务的结束,再去查询,没查询权限报error吗
yBmZlQzJ

选B是因为在MySQL中,对于被锁定的表或行,其他用户只能等待锁定的事务结束后才能对其进行操作。在这个问题中,HR用户启动了一个事务并更新了employees表中salary字段为109的员工的工资,这个操作会锁定该行。而ALICE用户没有DELETE权限,所以她不能直接删除该行。但是,由于她有UPDATE权限,所以她可以等待HR用户的事务结束后再执行DELETE操作。

因此,选项B是正确的答案。

暂无图片 评论
暂无图片 有用 0
yBmZlQzJ

在 HR 授予 Alice 删除权限之前,Alice 没有访问 HR.EMPLOYEES 的权限。但是 Alice 在 HR 授予她删除权限之前就已经开始了一个会话。因此,当 Alice 执行 DELETE FROM HR.EMPLOYEES WHERE EMPLOYEE_ID = 109 时,该命令将立即返回错误。所以答案是 A。

暂无图片 评论
暂无图片 有用 1
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏