我正在尝试向已插入数据的现有表添加唯一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
答案 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