【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 多行文字欄位設定預設值
- oracle增加欄位帶預設值Oracle
- 查詢oracle欄位預設值Oracle
- pydantic 欄位的預設值設定獲取當前時間
- EBS:主鍵ID欄位預設值來源於序號
- jpa~為欄位新增insert的預設值
- 建議欄位別名定義定義那裡順便可定義預設值,這預設值還可以是函式函式
- Dynamics CRM 通過配置來設定查詢欄位的預設檢視
- Django日期欄位預設值default=timezone.nowDjango
- Sqlserver的欄位datetime型別預設值設為getdate()時,設值毫秒為000SQLServer型別
- [需求建議]建議欄位別名定義定義那裡順便可定義預設值,這預設值還可以是函式函式
- [20201109]11.2.0.4增加欄位與預設值問題.txt
- [20210421]12c以上版本增加欄位與預設值.txt
- 關於mysql設定varchar 欄位的預設值''和null的區別,以及varchar和char的區別MySqlNull
- 小書MybatisPlus第9篇-常用欄位預設值自動填充MyBatis
- [BUG反饋]新建欄位無法使用字元型預設值字元
- 設定SAP標準報表顯示介面預設值的方式
- ANSYS18預設單位設定
- PG11新特性解讀:新增非空預設值欄位不需要重寫表
- ElasticSearch 設定某個欄位不分詞Elasticsearch分詞
- SqlSugar code first 欄位為列舉型別,預設生成資料庫欄位為bigint如何設定為int型別SqlSugar型別資料庫
- Python中如何給字典設定預設值Python
- sublime設定預設開啟側邊欄(失敗)
- antdesign的表單中的下拉框設定預設值BUG處理
- 2024-07-23 css設定了元素top:-20px,然後設定transition: all 3s;結果transition不生效?==》未設定初始值CSS
- QTableView設定單元格顏色未生效的問題QTView
- 為React Ant-Design Table增加欄位設定React
- C#給自動屬性設定預設值C#
- Golang技巧之預設值設定的高階玩法Golang
- Vantui---picker三級聯動設定預設值UI
- springmvc引數設定預設值,多地址請求SpringMVC
- flutter設定寬高不生效Flutter
- ${VAR:=預設值}和${VAR:-預設值} 區別
- MySQL為欄位新增預設時間(插入時間)MySql
- webapi 設定swagger上請求引數的預設值WebAPISwagger
- MySQL 更新一個表裡的欄位等於另一個表某欄位的值MySql
- MySQL欄位究竟是否需要設定成not nullMySqlNull