【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 --

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/519536/viewspace-707352/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/519536/viewspace-707352/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值