问题标签 [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.

0 投票
0 回答
904 浏览

sql - 将列更新为虚拟列 oracle

我想在虚拟列中修改我的表的现有列。通过在 Oracle SQL Developer 中打开“SQL”选项卡,当前列是(表 DDL):

我想将此列转换为虚拟列并得到以下结果:

为此,我编写了以下查询:

我不确定这是正确的方法,您能帮我找到正确的解决方案吗?

0 投票
1 回答
399 浏览

oracle - Oracle Forms 的虚拟列问题

我有一个使用 Oracle Forms 创建的界面。它有base table block一个字段(即col3与派生自”的表的列具有相同的名称)。

表单还有两个其他字段col1,并且col2是数字类型,这些字段也是具有col3上述列的同一个表的成员。

我转换col3为虚拟列作为列的总和col1col2在表的定义中(col3 number generated always as (nvl(col1,0)+nvl(col2,0)) virtual

当我尝试在基表中提交更改时,它会抛出错误消息

ORA-54013: 不允许对虚拟列执行 INSERT 操作

我知道将 DML 应用于虚拟列没有意义,但即使我改变了该col3字段的

  • Query Only财产从NoYes

  • Update Allowed财产从YesNo

  • Insert Allowed财产从YesNo

我收到相同的错误消息。我不想写显式的 DML 语句,因为表单有很多其他字段,它们也应该列在这些语句中。

你知道如何在不放弃base table block结构的情况下克服这个问题吗?(我使用的是 Fusion Middleware 11g 版本

0 投票
2 回答
275 浏览

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 匹配的列,所以我不确定如何派生我的列,当没有什么可以派生的时候?

0 投票
0 回答
420 浏览

java - 当表 ID 具有虚拟列时,无法使用 JPA 进行插入

我必须使用 JPA 映射一个表,但是这个表有一个多列键,其中一些作为 Oracle 虚拟列。当我尝试进行插入时,Hibernate(我使用的 JPA 的实现)返回给我这个错误:

“ORA-54013:在虚拟列上不允许插入操作”

我已经尝试过@Column(name = "field", insertable = false, updatable = false)我的字段,但是因为该字段是表多字段键的一部分,显然 JPA 无论如何都需要编写这个字段。

我无法修改数据库,我正在寻找只涉及休眠的解决方案。

有没有人遇到过同样的问题并有解决方案?

0 投票
2 回答
344 浏览

ruby-on-rails - Rails PostgreSQL 检查列是否是虚拟的

PostgreSQL 12 有一个很酷的Generated Columns功能,但我无法在 Rails 中检查列是否是虚拟的。

作为参考,Rails 中的 MySQL 适配器允许您这样做

但是在 PostgreSQL 适配器中你不能做同样的事情,尽管它确实支持生成的字段?

导轨 v.5.1.7

0 投票
1 回答
479 浏览

group-by - Apache Druid GroupBy 虚拟列

我正在尝试在 Druid 本机查询中执行 groupby 虚拟列,如下所示...

这给出了所有 row_counts 的 longsum 的单行,就好像 groupBy 列为空一样。

我的用法是正确的还是德鲁伊中的一个已知问题。文档说虚拟列可以像普通尺寸一样使用,但是对于如何甚至缺少工作示例并不是很清楚。

谢谢!帕尼

0 投票
0 回答
100 浏览

mysql - MYSQL:带有索引虚拟列的 JSON VS 普通列和规范化

问题陈述

我有一张users由 2 种不同类型的用户AB组成的大桌子。目前,它们共享一些字段,而其他字段是A-onlyB-only

现在,通常在此表上进行适当的规范化,我们最终可以拥有 1 个共享表和 2 个具有A-fieldsB-fields的相关表。但是,我的目标是减少空间,但尽可能保持相同的性能。

我的解决方案

我的解决方案是使用 JSON 类型来存储在 2 种不同用户类型之间不共享的字段,但同时为需要索引的字段创建生成和索引的虚拟列。它应该节省空间,因为 MySQL 不会为未使用的字段分配空间,同时由于虚拟列 + 索引,它保持或多或少相同的性能。此外,这些字段不会用作外键,因此虚拟列对我来说不是限制。

问题

环顾四周,似乎人们不建议使用 JSON 类型来避免在未使用的字段上浪费空间。相反,仍然强烈建议使用带有单独表的普通字段。您是否认为我使用 JSON 而不是实际字段来接近错误的方式?如果是,为什么?

0 投票
1 回答
628 浏览

mysql - MariaDB中生成的列定义中的用户定义函数?

根据文档,MariaDB 允许在生成的列定义中使用用户定义的函数https://mariadb.com/kb/en/generated-columns/

我正在使用 MariaDB 10.3.20,并且我创建了一个确定性函数,但是在尝试创建该字段时,它失败了。这是一些示例代码。

从 SELECT 语句可以看出,json_implode() 函数运行良好,但是在尝试执行最后两个 ALTER TABLE 语句时,都失败了。

我从几个不同的角度对此感兴趣:

  1. 为什么这不起作用?
  2. 适用于生成的列定义的 UDF 示例是什么?
  3. 是否可以在生成的列定义中使用多行或更复杂的代码?
  4. 有没有更好的方法来完成我正在尝试做的事情(获取一个 JSON 数组的字段并将其内爆,以便每个项目都用逗号分隔为字符串)?
0 投票
1 回答
25 浏览

oracle - Oracle SQL如何让数据库计算一列?

我想让数据库计算一列。例如:有一个名为“价格”的列。每次我在价格中插入一个新值时,我希望另一个名为“百分比”的列自动计算新值的 1%。像这样;

我怎样才能创建这个?

0 投票
0 回答
91 浏览

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

有任何想法吗?