oracle – 加载时添加具有默认值的列的最佳方式

前端之家收集整理的这篇文章主要介绍了oracle – 加载时添加具有默认值的列的最佳方式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
将列添加到具有默认值且约束不为空的表时。在数据库处于负载状态时,最好以单个语句运行或将其分解为步骤。
ALTER TABLE user ADD country VARCHAR2(4) DEFAULT 'GB' NOT NULL

ALTER TABLE user ADD country VARCHAR2(2)
UPDATE user SET country = 'GB'
COMMIT
ALTER TABLE user MODIFY country DEFAULT 'GB' NOT NULL
性能取决于您使用的Oracle版本。无论如何都会生成锁。

如果版本<= Oracle 11.1,则#1与#2相同。反正慢了
从Oracle 11.2开始,Oracle为第一个语句(一个命令全部执行)引入了一个很好的优化。您不需要更改命令 – Oracle的行为不同。它仅将默认值存储在数据字典中,而不是更新每个物理行。

但我也不得不说,我以前遇到过一些与此功能有关的错误(在Oracle 11.2.0.1中)

>传统导入失败,如果导出完成直接= Y
> merge语句可以抛出一个ORA-600 [13013](内部的oracle错误)
>使用这种表的查询中的性能问题

我认为这个问题在当前版本11.2.0.3中是固定的,所以我可以推荐使用这个功能

原文链接:https://www.f2er.com/oracle/205801.html

猜你在找的Oracle相关文章