【问题标题】:Oracle add a virtual column which adds yearsOracle添加了一个增加年份的虚拟列
【发布时间】:2014-09-13 23:12:17
【问题描述】:

我正在尝试添加一个日期类型的虚拟列,它将五年添加到另一个日期列:

ALTER TABLE AU_Ventes ADD (
DateVente date NOT NULL,
DateFinGarantie date As(ADD_MONTHS(DateVente, 60))
);

但我收到错误:“%s:无效标识符”。也许我不能在 ALTER TABLE 中使用 ADD_MONTHS 函数。我可以做些什么来完成我想做的事情?

谢谢。

【问题讨论】:

标签: sql oracle alter-table


【解决方案1】:

尽管您可以在create table 语句中定义一个虚拟列,显然您是在创建它的同时创建它的列,但是您不能在同一个alter table 语句中同时定义这两个列。您必须分两步完成:

ALTER TABLE AU_Ventes ADD DateVente date NOT NULL;
ALTER TABLE AU_Ventes ADD DateFinGarantie date
  As(ADD_MONTHS(DateVente, 60));

不确定这是故意的限制,但它是这样工作的。

Trivial SQL Fiddle 显示这个工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    相关资源
    最近更新 更多