将代理键添加到现有 Oracle DB 表的首选方法
我必须修改 Oracle 10g DB 中包含数千条记录的现有表,以添加代理自动编号键。我想到的一种方法是
- 创建一个新序列
- 创建 id 列,允许空值
- 使用序列更新 id 列
- 更改表为新 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
- Create a new sequence
- Create the id column, allowing null values
- Updating the id column with the sequence
- 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我将按以下方式执行此操作:
创建
id
列,允许空值Issue此查询:
更改表为新 id 列添加
NOT NULL
和PRIMARY KEY
创建序列,将其播种到
MAX(id) + 1
并使用用于进一步插入。I'd do it the following way:
Create the
id
column, allowing null valuesIssue this query:
Alter table to add
NOT NULL
andPRIMARY KEY
for the new id columnCreate the sequence, seeding it to
MAX(id) + 1
and use it for the further inserts.