gpt4 book ai didi

mysql - 为什么派生表在 Oracle 中是可更新的?

转载 作者:可可西里 更新时间:2023-11-01 07:05:05 24 4
gpt4 key购买 nike

我刚刚发现派生表在 oracle 中是可更新的。更新派生表时,它所基于的表也会随之更新。

示例 UPDATE (SELECT * FROM T where T.col1='val1') as D SET D.col2 ='some_val'

执行示例sql后,表T将被更新。

我不明白为什么 Oracle 支持这个特性。

作为this question说明,在mysql中,派生表是不可更新的。

最佳答案

查看 Codd's Rules 可能会有所帮助用于关系数据库。

规则 7 是:

Rule 7: High-level insert, update, and delete:

The capability of handling a base relation or a derived relation as a single operand applies not only to the retrieval of data but also to the insertion, update and deletion of data.

我的重点 - 请注意,许多人对关系数据库产生误解的一个重要方面是“关系”或“关系”一词的含义 - 关系是什么在 SQL 中称为。许多人假设关系数据库中的“关系”与实体关系模型中的关系是同一类事物 - 因此跳转到假设关系以某种方式与例如实体关系相关。外键。

现在,我并不是说 SQL,无论是体现在 ANSI 标准中,还是体现在任何特定产品中,都是 Codd 规则的完整实现(事实上,规则 6 很有问题),但至少有尝试在某些产品中实现它们。

关于mysql - 为什么派生表在 Oracle 中是可更新的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37541254/

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