问题标签 [virtual-column]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 将列更新为虚拟列 oracle
我想在虚拟列中修改我的表的现有列。通过在 Oracle SQL Developer 中打开“SQL”选项卡,当前列是(表 DDL):
我想将此列转换为虚拟列并得到以下结果:
为此,我编写了以下查询:
我不确定这是正确的方法,您能帮我找到正确的解决方案吗?
oracle - Oracle Forms 的虚拟列问题
我有一个使用 Oracle Forms 创建的界面。它有base table block
一个字段(即col3
“与派生自”的表的列具有相同的名称)。
表单还有两个其他字段col1
,并且col2
是数字类型,这些字段也是具有col3
上述列的同一个表的成员。
我转换col3
为虚拟列作为列的总和col1
并col2
在表的定义中(col3 number generated always as (nvl(col1,0)+nvl(col2,0)) virtual
)
当我尝试在基表中提交更改时,它会抛出错误消息
ORA-54013: 不允许对虚拟列执行 INSERT 操作
我知道将 DML 应用于虚拟列没有意义,但即使我改变了该col3
字段的
Query Only
财产从No
到Yes
Update Allowed
财产从Yes
到No
Insert Allowed
财产从Yes
到No
我收到相同的错误消息。我不想写显式的 DML 语句,因为表单有很多其他字段,它们也应该列在这些语句中。
你知道如何在不放弃base table block
结构的情况下克服这个问题吗?(我使用的是 Fusion Middleware 11g 版本)
sql - 如何使用新分区将数据从 TableA 复制到 TableB?
我的 TableA 有数十万行,而且大小仍在增加。没有分区,速度下降非常明显。
因此,我创建了一个名为 TableB 的新表,其列与 Oracle SQL Developer 中的(名称和类型)TableA 完全相同。(TableA 和 TableB 在同一个数据库中,但不是同一个表)我另外为 TableB 创建了分区。
现在,我要做的就是从 TableB 中复制 TableA 中的所有数据,以测试查询的速度。
为了测试带分区的表的速度,我决定复制所有数据,因为 TableB 与 A 具有所有相同的列。
我从上面的语句中所期望的是要复制的数据,但相反,我得到了错误:
从行开始的错误:命令中的 1 - 插入 TableB(从 TableA 中选择 *) 命令行错误:1 列:1 错误报告 - SQL 错误:ORA-54013:虚拟列 54013 上不允许插入操作。0000 -“插入操作”不允许在虚拟列上使用” *原因:试图将值插入到虚拟列中 *操作:重新发布声明而不为虚拟列提供值
我查了虚拟列,它似乎是
“查询时,虚拟列似乎是普通表列,但它们的值是派生的,而不是存储在磁盘上。定义虚拟列的语法如下所示。”
但是,我在 TableB 中没有任何数据。TableB 只有与 TableA 匹配的列,所以我不确定如何派生我的列,当没有什么可以派生的时候?
java - 当表 ID 具有虚拟列时,无法使用 JPA 进行插入
我必须使用 JPA 映射一个表,但是这个表有一个多列键,其中一些作为 Oracle 虚拟列。当我尝试进行插入时,Hibernate(我使用的 JPA 的实现)返回给我这个错误:
“ORA-54013:在虚拟列上不允许插入操作”
我已经尝试过@Column(name = "field", insertable = false, updatable = false)
我的字段,但是因为该字段是表多字段键的一部分,显然 JPA 无论如何都需要编写这个字段。
我无法修改数据库,我正在寻找只涉及休眠的解决方案。
有没有人遇到过同样的问题并有解决方案?
ruby-on-rails - Rails PostgreSQL 检查列是否是虚拟的
PostgreSQL 12 有一个很酷的Generated Columns功能,但我无法在 Rails 中检查列是否是虚拟的。
作为参考,Rails 中的 MySQL 适配器允许您这样做
但是在 PostgreSQL 适配器中你不能做同样的事情,尽管它确实支持生成的字段?
导轨 v.5.1.7
group-by - Apache Druid GroupBy 虚拟列
我正在尝试在 Druid 本机查询中执行 groupby 虚拟列,如下所示...
这给出了所有 row_counts 的 longsum 的单行,就好像 groupBy 列为空一样。
我的用法是正确的还是德鲁伊中的一个已知问题。文档说虚拟列可以像普通尺寸一样使用,但是对于如何甚至缺少工作示例并不是很清楚。
谢谢!帕尼
mysql - MYSQL:带有索引虚拟列的 JSON VS 普通列和规范化
问题陈述
我有一张users
由 2 种不同类型的用户A和B组成的大桌子。目前,它们共享一些字段,而其他字段是A-only或B-only。
现在,通常在此表上进行适当的规范化,我们最终可以拥有 1 个共享表和 2 个具有A-fields和B-fields的相关表。但是,我的目标是减少空间,但尽可能保持相同的性能。
我的解决方案
我的解决方案是使用 JSON 类型来存储在 2 种不同用户类型之间不共享的字段,但同时为需要索引的字段创建生成和索引的虚拟列。它应该节省空间,因为 MySQL 不会为未使用的字段分配空间,同时由于虚拟列 + 索引,它保持或多或少相同的性能。此外,这些字段不会用作外键,因此虚拟列对我来说不是限制。
问题
环顾四周,似乎人们不建议使用 JSON 类型来避免在未使用的字段上浪费空间。相反,仍然强烈建议使用带有单独表的普通字段。您是否认为我使用 JSON 而不是实际字段来接近错误的方式?如果是,为什么?
mysql - MariaDB中生成的列定义中的用户定义函数?
根据文档,MariaDB 允许在生成的列定义中使用用户定义的函数https://mariadb.com/kb/en/generated-columns/
我正在使用 MariaDB 10.3.20,并且我创建了一个确定性函数,但是在尝试创建该字段时,它失败了。这是一些示例代码。
从 SELECT 语句可以看出,json_implode() 函数运行良好,但是在尝试执行最后两个 ALTER TABLE 语句时,都失败了。
我从几个不同的角度对此感兴趣:
- 为什么这不起作用?
- 适用于生成的列定义的 UDF 示例是什么?
- 是否可以在生成的列定义中使用多行或更复杂的代码?
- 有没有更好的方法来完成我正在尝试做的事情(获取一个 JSON 数组的字段并将其内爆,以便每个项目都用逗号分隔为字符串)?
oracle - Oracle SQL如何让数据库计算一列?
我想让数据库计算一列。例如:有一个名为“价格”的列。每次我在价格中插入一个新值时,我希望另一个名为“百分比”的列自动计算新值的 1%。像这样;
我怎样才能创建这个?
oracle - Oracle Managed Data Access Bulk Copy Error pasing insert statement for table (virtual columns)
我们最近开始在我们的应用程序中使用 Oracle.ManagedDataAccess,现在它支持批量复制。问题是它似乎很难处理具有非托管客户端没有的虚拟列的表。
Oracle.ManagedDataAccess.Client.OracleException: 'ORA-02373: 解析表 SFOL.BUILDRECORD 的插入语句时出错。
ORA-54013: 不允许对虚拟列执行 INSERT 操作
上面的具体错误似乎表明它不喜欢提供的 DataTable 但 DataTable 明确指定了列并且不包含任何虚拟列。基础表本身确实有虚拟列,但我们没有插入它们。
数据库是 Oracle 19c,ManagedDataAccess 客户端是 19.10.0
有任何想法吗?