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

时间:2010-02-18 09:09:42

标签: database oracle surrogate-key

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

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

是否有更简单或更有效的方法(或者有什么理由说这不起作用)?

1 个答案:

答案 0 :(得分:8)

我会按照以下方式进行:

  1. 创建id列,允许空值

  2. 发出此查询:

    UPDATE  mytable
    SET     id = rownum
    
  3. 更改表格,为新的ID列添加NOT NULLPRIMARY KEY

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