加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 13:53:05 所属栏目:百科 来源:网络整理
导读:将列添加到具有默认值且约束不为空的表时。在数据库处于负载状态时,最好以单个语句运行或将其分解为步骤。 ALTER TABLE user ADD country VARCHAR2(4) DEFAULT 'GB' NOT NULL 与 ALTER TABLE user ADD country VARCHAR2(2)UPDATE user SET country = 'GB'CO
将列添加到具有默认值且约束不为空的表时。在数据库处于负载状态时,最好以单个语句运行或将其分解为步骤。
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中是固定的,所以我可以推荐使用这个功能。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读