gpt4 book ai didi

sql - 子查询可以(以任何方式)修改 SQL 中的数据库吗?

转载 作者:搜寻专家 更新时间:2023-10-30 23:43:52 25 4
gpt4 key购买 nike

  • SELECT 开头的命令不能修改数据库。

以上说法总是正确的,还是有异常(exception)?

也许换句话说,我们可以创建包含 update 命令的子查询吗?

最佳答案

我不知道任何有 AFTER | 的 RDMBS INSTEAD OF Select 触发器已实现,但在这种情况下 SELECT 可以间接修改数据库。

您的服务器上也可能设置了一个审计设置,用于跟踪 SELECT 语句。例如在 Oracle 中你有 DBMS_FGA包,您可以通过创建不带 audit_condition 参数的策略来实质上创建 ON SELECT 触发器。这将导致在每次选择时触发一个事件,并导致一个修改数据库的过程被执行。我不知道这种情况下的事务,但我认为回滚不会影响审计,否则很容易欺骗它:)。

另一个例子(SQL Server):

Select * from 
OPENQUERY(servername, 'EXEC uspGetRows')

uspGetRows 除了返回行之外,过程还可以做很多其他事情。

我认为您更愿意通过插入/更新/删除语句与选择“合并”来进行显式修改,但我从未听说过这样的事情。因此,这些只是与评论中的 INSERT..INTO 类似情况的两个示例。

关于sql - 子查询可以(以任何方式)修改 SQL 中的数据库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31562774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com