向表中添加唯一ID

时间:2013-07-23 18:04:55

标签: sql-server tsql

我正在尝试向已插入数据的现有表添加唯一ID。我不需要每行的新值,而是每个插入的实例。时间戳表示新插入。任何人都可以指出我正确的方向吗?我当前的表基本上是列a和时间戳。

ID     COLUMN A    TIME STAMP
1        abc       05-09-2013 11:00:23
1        bcd       05-09-2013 11:00:23
1        ab3       05-09-2013 11:00:23
2        abc       05-09-2013 11:15:00
2        123       05-09-2013 11:15:00
3        abc       05-09-2013 11:18:07
4        abc       05-09-2013 11:19:55
4        123       05-09-2013 11:19:55
4        165       05-09-2013 11:19:55
4        def       05-09-2013 11:19:55

4 个答案:

答案 0 :(得分:0)

无法想到基于每个插入实例放置唯一ID的简单方法。一个想法是在表上使用触发器,您可以在其中检查数据的插入方式,并在将数据插入表之前添加ID值。

答案 1 :(得分:0)

首先创建一个允许null的ID列。 然后编写一个过程,该过程在查询上有一个游标,该查询按时间戳列进行排序和分组。 对于每一行,将计数增加一 更新表,其中id = counter whwre times tamp =查询中的时间戳

在id列的添加约束结束时使其不为空

答案 2 :(得分:0)

您可能想要一个自动增量字段。在SQL Server中使用IDENTITY。这将使您能够在不提供此p_id值的情况下插入,并且该值将自动递增。

您不希望使用时间戳来表示唯一性,因为索引很困难且成本高昂。在时间值中确保唯一性也很困难。

CREATE TABLE Persons
(
P_Id int PRIMARY KEY IDENTITY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

答案 3 :(得分:0)

如果您的插入不是很频繁。您可以使用时间戳来获取唯一ID。 例如130509110023

您可以进行一些数学计算,以获得所需的数据长度,这将为您提供唯一的ID