在Oracle中:如何判断SQL查询是否会导致更改而不执行它?
发布时间:2020-12-12 13:13:40 所属栏目:百科 来源:网络整理
导读:我有一个包含SQL语句的字符串.我想知道查询是否会修改数据或数据库结构,或者它是否只读取数据.有办法做到这一点吗? 更多信息:在我们的应用程序中,我们需要让用户输入SQL查询,主要是作为应用程序报告系统的一部分.应允许这些SQL查询从数据库中读取他们喜欢
我有一个包含SQL语句的字符串.我想知道查询是否会修改数据或数据库结构,或者它是否只读取数据.有办法做到这一点吗?
更多信息:在我们的应用程序中,我们需要让用户输入SQL查询,主要是作为应用程序报告系统的一部分.应允许这些SQL查询从数据库中读取他们喜欢的任何内容,但不应允许他们修改任何内容.没有更新,删除插入,表格丢弃,约束删除等. 截至目前,我只测试字符串中的第一个单词是否为“select”,但这太紧凑而且太不安全. 解决方法为仅具有select权限的应用程序部分创建新用户.请记住,您还需要为“只读”用户将能够查看的所有表/视图创建同义词.应用程序的“常规”部分仍然可以执行其他操作(插入,更新,删除).只是报告将使用只读用户. 正如Horacio所说,添加“包装”视图也是一个好主意/实践,这些视图只会暴露您想要公开的内容.某种“公共API”.如果您需要更改基础表并且不希望/不能将报告更改为所述表的新定义,这可以为您提供灵活性.然而,这可能被视为许多“额外工作”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |