8

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

  1. 创建一个新序列
  2. 创建 id 列,允许空值
  3. 用序列更新 id 列
  4. Alter table 为新的 id 列添加“not null”和“primary key”

有没有更简单或更有效的方法来做到这一点(或者有什么原因导致这不起作用)?

4

1 回答 1

8

我会这样做:

  1. 创建id列,允许空值

  2. 发出此查询:

    UPDATE  mytable
    SET     id = rownum
    
  3. 更改表以添加新NOT NULLPRIMARY KEYid 列

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

于 2010-02-18T09:18:19.573 回答