0

如何将列添加到具有给定定义的现有表中。例如,我有一个名为employee 的表,其列名为hire_date。现在使用alter 并且使用alter,我想添加一个名为tenure 的列,其中包含(hire_date 和2012 年7 月14 日)之间的差异。这是我试过的

alter table employee add(tenure numeric(10) where tenure=(select to_date(
'14-JULY-2012')-HIRE_DATE from employee));
4

2 回答 2

1

从 11g 开始,这应该可以工作:

ALTER TABLE employee 
 ADD tenure GENERATED ALWAYS 
   AS (TO_DATE('20120714','YYYYMMDD') - hire_date) VIRTUAL
于 2012-07-17T07:55:30.987 回答
1

由于新列可以从现有列派生,因此我不会将其添加到表中。保持派生列一致是一项艰巨的工作,并且有更好的选择。

相反,您可以创建一个添加列的视图:

create view ViewName as
select  hire_date
,       hire_date - TO_DATE('20120714','YYYYMMDD') as DaysSinceJuly14th
,       ... other columns ...
from    employees

或者您可以在任何选择语句中即时进行计算:

select  hire_date - TO_DATE('20120714','YYYYMMDD') as DaysSinceJuly14th
from    employees
where   name = 'Jones' 
于 2012-07-17T07:55:31.520 回答