向原有表中新增不為空列(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.