Oracle11g Oracle数据库如何将永久值函数设置为列?

Oracle11g Oracle数据库如何将永久值函数设置为列?,oracle11g,oracle-sqldeveloper,netbeans-7,Oracle11g,Oracle Sqldeveloper,Netbeans 7,我正在使用Oracle 11g express和SqlDeveloper 4.0.3。在我的数据库中,我有一个名为TABLE1的表,如下所示: ID A B C 1 3 2 null 2 1 2 null 我还有一个java程序,可以在表ID、a、B上插入值。 因此,我希望数据库像一个函数一样记住添加列a和B并将其设置为C,而不是像在Developer上的查询中那样手动执行: 更新表1设置C=A+B,其中C为空 如何做到这一点?我

我正在使用Oracle 11g express和SqlDeveloper 4.0.3。在我的数据库中,我有一个名为TABLE1的表,如下所示:

   ID   A    B   C
   1    3    2   null
   2    1    2   null
我还有一个java程序,可以在表ID、a、B上插入值。 因此,我希望数据库像一个函数一样记住添加列a和B并将其设置为C,而不是像在Developer上的查询中那样手动执行: 更新表1设置C=A+B,其中C为空


如何做到这一点?

我猜您希望删除现有的物理列C,并创建一个新的虚拟列C

ALTER TABLE table1
  DROP COLUMN c;

ALTER TABLE table1
  ADD c GENERATED ALWAYS AS (a+b);

我猜您希望删除现有的物理列C,并创建一个新的虚拟列C

ALTER TABLE table1
  DROP COLUMN c;

ALTER TABLE table1
  ADD c GENERATED ALWAYS AS (a+b);

听起来您希望C列是一个虚拟列,而不是一个物理列。是否可以删除现有的物理列C并创建新的虚拟列?如果你想要一个物理列,你会想要创建一个计算C值的触发器。我不知道如何为我的示例编写触发器代码。你在乎最终是一个物理列还是一个虚拟列吗?我猜你想要一个虚拟专栏。我很高兴向您展示如何删除现有的物理列。如果你需要那篇专栏文章,我很乐意帮你扣动扳机。我不知道你的限制是什么,因此,我不知道您是否接受这两个选项。我只希望C列像一个计算字段,而不是像上面的更新那样手动执行。还要将值存储在C列中而不丢失它们。听起来您希望C列是一个虚拟列,而不是一个物理列。是否可以删除现有的物理列C并创建新的虚拟列?如果你想要一个物理列,你会想要创建一个计算C值的触发器。我不知道如何为我的示例编写触发器代码。你在乎最终是一个物理列还是一个虚拟列吗?我猜你想要一个虚拟专栏。我很高兴向您展示如何删除现有的物理列。如果你需要那篇专栏文章,我很乐意帮你扣动扳机。不过,我不知道您的约束是什么,所以我不知道您是否接受这两个选项。我只希望C列像一个计算字段,而不是像上面的更新那样手动执行。还要将值存储在C列中而不丢失它们。是的,就是这样。非常感谢。是的,就是这样。非常感谢。