如何在SQL Server 2008中的表中的2列中设置标识规范YES

时间:2013-07-18 08:19:30

标签: c# asp.net sql settings identity

如何在SQL Server 2008中的表中的2列中设置标识规范YES?

示例:

id int, 
catid int,

for "@id"我正在使用主键,我设置Is Identity YES。允许不为空。

for "@catid"我想设置Identity YES,

但是当我为"@catid""@id"列设置标识为是时,它将成为标识号本身。

我希望@catid也像@id一样生成ID。

检查图片附PLZ。并建议我

enter image description here

3 个答案:

答案 0 :(得分:2)

您似乎遇到了一些表设计问题。您为什么要拥有两个Identity列?如评论中所述,这些值将始终相同或可从原始身份规范中计算出来:

create table MyTable (
    Id int identity(1,1) not null primary key,
    CatId as Id, -- computed column
    MyField nvarchar(100) null
)

收率:

Id  CatId   MyField
1   1       A
2   2       B
3   3       C
4   4       D
5   5       E

现在,如果我们想为CatId提供一些不同的值:

create table MyTable (
    Id int identity(1,1) not null primary key,
    CatId as Id * 3, -- some different value
    MyField nvarchar(100) null
)

我们会得到:

Id  CatId   MyField
1   3       A
2   6       B
3   9       C
4   12      D
5   15      E

无论哪种方式,拥有多个标识列都没有意义。

答案 1 :(得分:1)

两列不可能在同一个表中设置标识,但我有办法

将您的id设置为primary和identity,并在此表上插入操作后写入触发器,然后使用id值更新catid列 你将获得两列中的id,其中一列是主键,另一列是普通列

答案 2 :(得分:0)

不可能有多个标识列。而是将一列作为主键而不自动增量。

每个表只允许一个标识列。

使用主键。