在生产中的现有表中添加新列

时间:2018-10-26 20:41:35

标签: oracle alter

当该表包含一百万条记录并且该表处于活动状态时,在生产oracle数据库中添加具有默认值的非空列的最佳方法是什么。如果我们执行列创建,添加默认值并使它在单个语句中不为null的话,它将创建任何锁吗?

1 个答案:

答案 0 :(得分:1)

取决于版本。从11g开始,您可以执行一个简单的ALTER TABLE命令,并且不会产生任何影响,默认值不会具体化,并且不会从字典信息中获取。

alter table tablename add columnname varchar2(2) default 'XX' not null;
  

以上语句将不会对表的所有记录进行更新[...]当用户选择现有记录的列时,Oracle从数据字典[...]中获取有关默认值的事实。 ],并且仍然不会因重做和撤消生成而受到任何惩罚[...]

Source here,“添加具有默认值的列”一章