如何做这样的事......
alter table customer_schedule add (week_number as (TO_CHAR((SCHEDULE_DATE),'iw'))
其中SCHEDULE_DATE是表
中现有的列之一答案 0 :(得分:7)
这是您需要 VIRTUAL COLUMN 的地方。如果你在11g及以上,你当然可以 -
alter table table_name add (column_name [data_type] [generated always] as (column_expression) [virtual]);
在你的情况下,它会像 -
alter table customer_schedule add (week_number data_type generated always as (TO_CHAR((SCHEDULE_DATE),'iw') VIRTUAL)
答案 1 :(得分:2)
在9i上,你不能使用虚拟列,所以我可能会选择一个视图:
create view customer_schedule_view as
select
c.*,
to_char(c.schedule_date, 'iw')) week_number
from
customer_schedule c;
当然,在表单中,您需要从视图而不是从表中进行选择。
答案 2 :(得分:0)
默认关键字应该允许您在缺少某些值时存储值,但由于限制,you cannot use a column name
DEFAULT表达式不能包含对PL / SQL函数或到其他列的引用,伪列LEVEL,PRIOR和ROWNUM,或者未完全指定的日期常量。
我认为行级BEFORE INSERT / UPDATE触发器应该是你想要的。