如何将列添加到具有给定定义的现有表中。例如,我有一个名为employee的表,其列名为hire_date。现在使用alter和 only alter,我想添加一个名为tenure的列,其中包含(hire_date和14-JULY-2012)之间的差异。这是我尝试过的
alter table employee add(tenure numeric(10) where tenure=(select to_date(
'14-JULY-2012')-HIRE_DATE from employee));
答案 0 :(得分:1)
从11g开始,这应该有效:
ALTER TABLE employee
ADD tenure GENERATED ALWAYS
AS (TO_DATE('20120714','YYYYMMDD') - hire_date) VIRTUAL
答案 1 :(得分: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'