将代理键添加到现有 Oracle DB 表的首选方法

发布于 2024-08-22 04:33:35 字数 216 浏览 8 评论 0原文

我必须修改 Oracle 10g DB 中包含数千条记录的现有表,以添加代理自动编号键。我想到的一种方法是

  1. 创建一个新序列
  2. 创建 id 列,允许空值
  3. 使用序列更新 id 列
  4. 更改表为新 id 列添加“not null”和“主键”

是否有更简单或更有效的方法来做到这一点(或者是否有某种原因导致这不起作用)?

I have to modify an existing table in a Oracle 10g DB with a few thousand records to add a surrogate autonumber key. One way that comes to my mind is to

  1. Create a new sequence
  2. Create the id column, allowing null values
  3. Updating the id column with the sequence
  4. Alter table to add "not null" and "primary key" for the new id column

Is there an easier or more efficient way of doing this (or is there some reason why this wouldn't work)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦巷 2024-08-29 04:33:35

我将按以下方式执行此操作:

  1. 创建 id 列,允许空值

  2. Issue此查询:

    更新 mytable
    SET id = 行号
    
  3. 更改表为新 id 列添加 NOT NULLPRIMARY KEY

  4. 创建序列,将其播种到 MAX(id) + 1 并使用用于进一步插入。

I'd do it the following way:

  1. Create the id column, allowing null values

  2. Issue this query:

    UPDATE  mytable
    SET     id = rownum
    
  3. Alter table to add NOT NULL and PRIMARY KEY for the new id column

  4. Create the sequence, seeding it to MAX(id) + 1 and use it for the further inserts.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文