【问题标题】: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 显示这个工作。