|
|
刚才简单的再次做了个测试,发现了如下的"规律"(不知道是否通用)
1)如果第一次新加column设置default,那么default值是被记录在2个地方,一是col$.default$,同时在ecol$.BINARYDEFVAL也做记录(新加的column)
2)如果再次修改(modify)同一字段的default value,那么只记录在col$.default$中,ecol$.BINARYDEFVAL不被修改.
这个时候,data block中也不记录之前记录的第一个缺省值的信息.
3)第三次修改(modify)同一字段的default value,系统修改col$.default$,同时会将第一次的default写入到data block中,只在最后一行中记录.(经过2次测试发现不一样,需要继续跟踪)
4)可以在执行dml操作事务不提交的时候修改新加列的default值,但只允许一次.
5)Oracle 11g中添加具有default值的列的时候,如果有未提交的事务存在,那么对于非not null 的新列,是会遇到ORA-00054这个错误的,否则可以添加成功.而如果修改某一列的default值的时候,就和以前的一样了,不能有事务存在.
测试的数据太长,没法上传了,大家继续跟踪.
[ 本帖最后由 Toms_zhang 于 2009-1-20 11:44 编辑 ] |
|