繁体   English   中英

更改表在oracle中添加guid列

[英]alter table adding guid column in oracle

更改包含约一千万行的表的语句是什么,添加一个guid列,该列将为每一行保留唯一的标识符(不属于pk的一部分)

全局唯一标识符列应为哪种数据类型? 有创建它的程序吗? 每当插入新记录时,它将如何自动递增或产生?

将其分解为单独的阶段

首先,我们需要一个新列:

alter table MyTable
add guid_column raw(32) default sys_guid();

然后更新现有行:

update MyTable
set guid_column = sys_guid();
  1. 使用oracle 12c的标识列功能将一列添加到表中,该列在向表中添加新行时会自动递增。
  2. 处理此任务的理想方法是:a)使用带有新“标识列”的CREATE TABLE AS(CTAS语句)创建结构类似于源表的“新”表,而不是在现有的ALTER语句中添加标识列表。 b)与在现有表上运行ALTER相比,CTAS的工作速度更快。 c)确认“新”表具有源表中的所有数据以及包含唯一值以及所有索引和约束的列之后,可以删除原始表。

避免创建约束的另一种方法是,将原始表上存在的索引添加到新表上,即创建一个包含所有约束,索引和标识列的空表。 让DBA从原始表中提取数据并将其导入“新”表中。

好处:这种方法将确保依赖于源表的所有对象都不会变为无效,这通常会妨碍应用程序的某些功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM