当前位置:  开发笔记 > 后端 > 正文

将列添加到现有表并对其进行唯一编号

如何解决《将列添加到现有表并对其进行唯一编号》经验,为你挑选了4个好方法。

我想在现有的遗留数据库中添加一个列,并编写一个过程,通过该过程我可以为每个记录分配不同的值.像添加列并为其自动生成数据之类的东西.

就像,如果我添加一个名为"ID"(数字)的新列,我想为每个记录初始化一个唯一值.所以,我的ID列将有1到1000的记录.我该怎么做?



1> Simon Johnso..:

这取决于数据库,但对于SQL Server,这可以通过以下方式实现:

alter table Example
add NewColumn int identity(1,1)


如果您在使用管理工作室gui进行更改时遇到问题,可以更改/ Tools/Options/Designer/Table和Database Desiger下的设置,您将找到一个复选框"防止保存更改,需要重新创建表格"取消选中该框,您将甚至可以使用gui添加标识列.
这很好用,并自动添加了我需要的所有数字.谢谢!

2> Tom Martin..:

如果您发布了正在使用的SQL数据库,这将有所帮助.对于MySQL,您可能需要auto_increment:

ALTER TABLE tableName ADD id MEDIUMINT NOT NULL AUTO_INCREMENT KEY

不确定这是否会追溯应用值.如果不是,您应该只能使用存储过程或简单程序迭代您的值(只要没有其他人正在写入数据库)并设置使用该LAST_INSERT_ID()函数来生成id值.


我也可以确认这确实适用于MySQL; 我刚刚向现有的无索引表添加了一个递增的id字段,每行都有一个唯一的新id.

3> Roy Tang..:

对于oracle你可以做类似下面的事情

alter table mytable add (myfield integer);

update mytable set myfield = rownum;



4> Flavien Volk..:

和Postgres等价(仅当你想要"id"作为键时,第二行才是强制性的):

ALTER TABLE tableName ADD id SERIAL;
ALTER TABLE tableName ADD PRIMARY KEY (id);

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有