如何在 SQL Server 2008 的表中的 2 列中设置身份规范是?
例子:
id int,
catid int,
因为"@id"
我正在使用主键并且我设置 Is Identity YES。允许不为空。
因为"@catid"
我也想设置 Identity YES,
"@catid"
但是当我为列 设置 Identity YES 时,"@id"
列本身就变成了 Identity No。
我@catid
也想自己生成 id @id
。
请检查附上的图片。并建议我
您似乎遇到了一些表格设计问题。为什么要有两个身份列?如评论中所述,这些值将始终相同或可从原始身份规范计算:
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
无论哪种方式,拥有多个身份列都没有意义。
两列不可能在同一个表中设置标识,但我有办法
将您的 id 设置为 primary 和 identity 并在对该表进行插入操作后写入触发器,然后使用 id 值更新 catid 列,您将在两列中获得 id,其中一列是主键,另一列是普通列
不可能有多个标识列。而是将一列作为主键而不自动递增。
每个表只允许一个标识列。
使用主键。