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

sim*_*mon 8 database oracle surrogate-key

我必须使用几千条记录修改Oracle 10g DB中的现有表,以添加代理自动编号密钥.我想到的一种方法是

  1. 创建一个新序列
  2. 创建id列,允许空值
  3. 使用序列更新id列
  4. 更改表以为新id列添加"not null"和"primary key"

有没有更简单或更有效的方法来做到这一点(或者有什么理由说这不起作用)?

Qua*_*noi 8

我会用以下方式做到:

  1. 创建id列,允许空值

  2. 发出此查询:

    UPDATE  mytable
    SET     id = rownum
    
    Run Code Online (Sandbox Code Playgroud)
  3. 更改要添加的表NOT NULLPRIMARY KEY新的id列

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