更新具有不同值的表行

时间:2014-05-06 14:27:41

标签: sql sql-server

我有一个名为Customer的表,其中有几个字段,例如FirstName,LastName,Birthdate。后来我添加了一个新字段CustomerId。 我想在这个表的每一行添加一个序列号,我怎么能这样做?

CustomerId应以1000000开头。

某些行已有CustomerId,数字低于1000000。

我正在考虑使用一个变量增加1的循环创建一个过程。

CREATE myFunction()
@id int = 1000000
BEGIN
    FOR EACH row in [tablename]
    BEGIN
       IF CustomerId is null then CustomerId = @id
       SET @id = @id + 1
    END    
END;

2 个答案:

答案 0 :(得分:1)

只需将新列添加为标识,SQL Server将自动使用顺序增加的整数来填充它。

 Alter Table {TABLENAME} 
 ADD CustomerId Identity (100000, 1) Integer NOT NULL

既然你提到某些列已经有了一个CustomerId,那么我会使用上面的名称添加另一个新列,并使用不同的名称,然后执行更新查询以更新现有的CustomerId列,其中不会填充任何列你需要做的方式是否符合你的要求(重复是否可以?如果没有,你能改变那些现有的CustomerId值吗?如果不是,那么当发生冲突时其他值应该是什么?等等。

答案 1 :(得分:0)

正如Charles所说,你可以添加标识栏。

这样做:

alter table CUSTOMERS
add ID int Identity(1,1) constraint PK_Customers primary key

您也可以在不将其设置为主键

的情况下执行此操作
alter table CUSTOMERS
add ID int Identity(1,1)