1. 程式人生 > >向原有表中新增不為空列(oracle為例)

向原有表中新增不為空列(oracle為例)

在學習工作中,我們會遇到向一些已經使用過程中的表中新增新欄位,而且不允許為空。

這裡以某個表為例:

alter table sys_org add (Is_bottom_gain  char(1)  null) ;
alter table sys_org add (Is_bottom_unit  char(1)  null) ;
alter table sys_org add (Belong_Financial_industry  varchar2(100)  null) ;
alter table sys_org add (Belong_profit_centre    varchar2(100)  null) ;
alter table sys_org add (Belong_Financial_org_cost    varchar2(100)  null) ;
alter table sys_org add (Belong_Financial_org_profit    varchar2(100)  null default '0') ;
alter table sys_org add (Account_org_name     varchar2(100)  null) ;

comment on column SYS_ORG.Is_bottom_gain
is '是否底層利潤中心';
comment on column SYS_ORG.Is_bottom_unit
is '是否底層單位';
comment on column SYS_ORG.Belong_Financial_industry
is '財務所屬行業';
comment on column SYS_ORG.Belong_profit_centre
is '所屬利潤中心';
comment on column SYS_ORG.Belong_Financial_org_cost
is '所屬財務組織';
comment on column SYS_ORG.Belong_Financial_org_profit
is '所屬財務組織';
comment on column SYS_ORG.Account_org_name
is '核算組織名稱';

---------------------------我現在要新加兩個不為空欄位

alter table sys_org modify Is_bottom_gain  default '0';
alter table sys_org modify Is_bottom_unit  default '0';

ALTER TABLE sys_org MODIFY Is_bottom_gain not NULL;
ALTER TABLE sys_org MODIFY Is_bottom_unit not NULL;

直接設定not null 不可行。因為存在之前的資料。

所以這裡可以先預設給他加上預設值 0;執行之後再重新設定這一列not null.