【COLUMN】設定表欄位預設值僅對未來生效

secooler發表於2011-09-12
  提問:設定表欄位的預設值是否會對已有資料資料進行調整?回答此類問題最有效的方法就是“實踐”。設計一個實驗進行驗證,然後再從原理上進行理解。印象將會深刻。
  回答:設定表欄位的預設值不會對已有資料資料進行調整,只會影響未來欄位內容。

1.建立測試表T並初始化資料
sec@ora10g> create table t (x number,y number);

Table created.

sec@ora10g> insert into t values (1,null);

1 row created.

sec@ora10g> select * from t;

         X          Y
---------- ----------
         1

2.調整T表的X欄位的預設值為5000
sec@ora10g> alter table t modify (y default 5000);

Table altered.

3.驗證對現有資料的影響
sec@ora10g> select * from t;

         X          Y
---------- ----------
         1

可見,對原有的Y值沒有影響,之前是NULL值,現在仍然是NULL值。

4.測試對新插入的資料的效果
sec@ora10g> insert into t(x) values (2);

1 row created.

sec@ora10g> commit;

Commit complete.

sec@ora10g> select * from t;

         X          Y
---------- ----------
         1
         2       5000

新加入的資料的Y值已經被初始化為預設值5000。

5.小結
  到此,透過一個非常簡單的實驗便對可能存在的“疑問”以自問自答的形式處理完畢。結論是,當設定表欄位的預設值不會對已有資料資料進行調整,只會影響未來欄位內容。


Good luck.

secooler
11.09.12

-- The End --

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-707352/,如需轉載,請註明出處,否則將追究法律責任。

相關文章