0

我正在尝试将唯一 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

4 回答 4

0

想不出任何简单的方法来根据每个插入实例放置唯一 ID。一种想法是在表上使用触发器,您可以在其中检查数据如何插入并在数据插入表之前添加 ID 值。

于 2013-07-23T18:10:48.003 回答
0

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

您可以做一些数学运算以获得所需的数据长度的适当函数,这将为您提供唯一的 id

于 2013-07-23T18:26:48.473 回答
0

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

最后在 id 列上添加约束以使其不为空

于 2013-07-23T18:14:10.737 回答
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)
)
于 2013-07-23T18:20:06.183 回答