2

如何在 SQL Server 2008 的表中的 2 列中设置身份规范是?

例子:

id int, 
catid int,

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

因为"@catid"我也想设置 Identity YES,

"@catid"但是当我为列 设置 Identity YES 时,"@id"列本身就变成了 Identity No。

@catid也想自己生成 id @id

请检查附上的图片。并建议我

在此处输入图像描述

4

3 回答 3

2

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

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

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

于 2013-07-18T08:30:18.507 回答
1

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

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

于 2013-07-20T09:21:24.007 回答
0

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

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

使用主键。

于 2013-07-18T08:44:55.887 回答