在单个表中创建两个标识列时出现问题

时间:2010-12-20 16:16:30

标签: sql sql-server sql-server-2005

我在单个表中创建两个标识列时遇到问题。这是我的工作......他们需要不惜一切代价在一张表中使用两个标识列。有没有办法做到这一点。

请提供一次或稍后在单个表中创建两个标识列的任何语法。

先谢谢, Shashra

4 个答案:

答案 0 :(得分:5)

在SQL Server中,您可以拥有一个计算列,该列与标识(或任何其他)列保持相同的值:

CREATE TABLE [dbo].[test](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [idCopy]  AS ([id]),
    [whatever] [nvarchar](max) NOT NULL
)

答案 1 :(得分:1)

在同一个表中不能有两个相同的列。如果您在表X中有两个名为id的列,那么此查询的结果是什么:

select id from X

显然sql会遇到这个问题。我认为您可以做的最好的事情是使用类似名称(例如,Identity或ID2)进行另一个查询,并将新列的每个字段设置为该表中ID(原始字段)的vlue

答案 2 :(得分:0)

SQL Server表中只能有一个标识列:

"There can only be one IDENTITY column per table" - Why?

如果您向我们提供了有关您要实现的目标的更多信息(以及序列的预期行为)以及原因,可能会更容易一些。

例如,您可以添加计算或持久计算列,该列通过其他名称公开标识。

您可以将两列作为具有单独标识列的两个单独表的外键,然后在每个外键列上添加唯一约束。

在我们更多地了解您要实现的目标之前,很难看到拥有两个标识列会带来什么好处。

答案 3 :(得分:0)

人们应该冷静下来。他可能想要用不同的种子和不同增量的不同字段来增加。

id1: 1
id2: 1

id1: 1
id2: 2

id1: 1
id2: 3

id1: 2
id2: 1

答案是使用复合键并以某种方式自己设置值。

根据您的第二个id的递增要求,可能使用身份和触发器: http://msdn.microsoft.com/en-us/library/ms189799.aspx