创建一个唯一的浮点ID?

时间:2012-05-31 21:29:40

标签: sql sql-server-2008

我不知道如何表达这个问题,但我试图这样做:

alter table [TEMP]
add SEQID int identity(1,1)

这有效;但是,我真正需要的是一个浮点列而不是一个int:

alter table [TEMP]
add SEQID **FLOAT** identity(1,1)

我认为这是非法的。如果不是,请告诉我。 是否有解决浮动ID列的工作?

编辑:有没有办法将标识列创建为int,然后删除标识属性,然后将列转换为浮点数?

2 个答案:

答案 0 :(得分:3)

你可以做你想做的事:

create table temp (
    id int identity(1,1),
    fid as cast(id as float)
)

这会将id添加为整数,但是会有另一列通过将其转换为float来计算。

为什么要为旧系统创建新的ID?

或者,您可以将计算列添加到现有表中:

alter table temp add fid as cast(id as float)

答案 1 :(得分:-1)

我不知道我是否理解为什么你想要一个浮点ID。该列通常只是存储为int(bigint,smallint,取决于表...),但int将唯一地标识表的每一行,以允许您查询每一行而不会造成数据污染。您只需确保正确加入表格。

如果你真的确定使用浮点数,那么我认为这就足够了,除非我遗漏了一些东西:

alter table [TEMP]
add SEQID float identity(1,1)