【COLUMN】設定表欄位預設值僅對未來生效
提問:設定表欄位的預設值是否會對已有資料資料進行調整?回答此類問題最有效的方法就是“實踐”。設計一個實驗進行驗證,然後再從原理上進行理解。印象將會深刻。
回答:設定表欄位的預設值不會對已有資料資料進行調整,只會影響未來欄位內容。
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 --
回答:設定表欄位的預設值不會對已有資料資料進行調整,只會影響未來欄位內容。
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sql設定欄位預設值SQL
- MySQL欄位預設值設定詳解MySql
- SharePoint 多行文字欄位設定預設值
- MySQL修改欄位預設值MySql
- 對錶中的欄位設定了預設值,新增記錄後卻發現該欄位為nullNull
- oracle時間欄位預設值,hibernate對映Oracle
- oracle增加欄位帶預設值Oracle
- 查詢oracle欄位預設值Oracle
- pydantic 欄位的預設值設定獲取當前時間
- MySQL-修改欄位型別、設定預設值,以及新增註釋MySql型別
- EBS:主鍵ID欄位預設值來源於序號
- 通用SQL語句修改欄位預設值SQL
- 建議欄位別名定義定義那裡順便可定義預設值,這預設值還可以是函式函式
- mysql-欄位設定Default值問題MySql
- Dynamics CRM 通過配置來設定查詢欄位的預設檢視
- jpa~為欄位新增insert的預設值
- [需求建議]建議欄位別名定義定義那裡順便可定義預設值,這預設值還可以是函式函式
- Sqlserver的欄位datetime型別預設值設為getdate()時,設值毫秒為000SQLServer型別
- Django日期欄位預設值default=timezone.nowDjango
- golang通過反射設定結構體欄位的值Golang反射結構體
- SQL Server語句刪除帶有預設值的欄位SQLServer
- 對關鍵信貸控制欄位設定許可權
- django 設定預設值到SQLDjangoSQL
- 關於mysql設定varchar 欄位的預設值''和null的區別,以及varchar和char的區別MySqlNull
- oracle 資料庫設定表和欄位的別名Oracle資料庫
- [BUG反饋]新建欄位無法使用字元型預設值字元
- SQLLDR——CTL檔案:欄位設定SQL
- 設定SAP標準報表顯示介面預設值的方式
- NRIV表欄位的設定使用
- ANSYS18預設單位設定
- PG11新特性解讀:新增非空預設值欄位不需要重寫表
- 小書MybatisPlus第9篇-常用欄位預設值自動填充MyBatis
- MySQL多個timestamp欄位自動新增預設值的問題MySql
- ElasticSearch 設定某個欄位不分詞Elasticsearch分詞
- oracle和mysql設定自增欄位OracleMySql
- 如果對10g 中含LOB欄位的表僅僅進行insert 的同步 ?
- QTableView設定單元格顏色未生效的問題QTView
- 在高併發、高負載的情況下,如何給表新增欄位並設定DEFAULT值?負載