如何在SQL Server 2008中的表中的2列中设置标识规范YES?
示例:
id int,
catid int,
for "@id"
我正在使用主键,我设置Is Identity YES。允许不为空。
for "@catid"
我想设置Identity YES,
但是当我为"@catid"
列"@id"
列设置标识为是时,它将成为标识号本身。
我希望@catid
也像@id
一样生成ID。
检查图片附PLZ。并建议我
答案 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)
不可能有多个标识列。而是将一列作为主键而不自动增量。
每个表只允许一个标识列。
使用主键。