我有一个名为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;
答案 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)