我在单个表中创建两个标识列时遇到问题。这是我的工作......他们需要不惜一切代价在一张表中使用两个标识列。有没有办法做到这一点。
请提供一次或稍后在单个表中创建两个标识列的任何语法。
先谢谢, Shashra
答案 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