在现有表格中添加一列并为其唯一编号

时间:2020-03-06 14:29:05  来源:igfitidea点击:

我想在现有的旧数据库中添加一列,并编写一个过程,通过该过程可以为每个记录分配不同的值。诸如添加列并为其自动生成数据之类的事情。

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

解决方案

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

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

仅使用ALTER TABLE应该可以。添加具有正确类型和IDENTITY标志的列,它应该可以解决问题

查阅有关ALTER TABLE语法的MSDN文章http://msdn.microsoft.com/en-us/library/aa275462(SQL.80).aspx

取决于数据库,因为每个数据库都有添加序列号的不同方法。我将更改表以添加列,然后在groovy / python / etc中编写一个db脚本以读取数据并使用序列更新id。设置完数据后,我将在表中添加一个序列,该序列从最高编号之后开始。设置数据后,请正确设置主键。

对于oracle,我们可以执行以下操作

alter table mytable add (myfield integer);

update mytable set myfield = rownum;

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

ALTER TABLE tableName ADD id MEDIUMINT NOT NULL AUTO_INCREMENT KEY

但不确定是否追溯应用这些值。如果不是这样,我们应该只能使用存储过程或者简单程序(只要没有其他人正在向数据库写入数据)对值进行迭代,并使用LAST_INSERT_ID()函数来生成ID值。