小编xer*_*ina的帖子

复合主键的自动递增

我有一个名为'Workspaces'的表,其中'AreaID'和'SurfaceID'列用作复合主键.AreaID引用另一个名为"Areas"的表,该表只有AreaID作为主键.我现在要做的是使每个新的AreaID上的surfaceID从1重复.现在我正在使用以下代码用于表'Areas'和'Workspaces':

--Table 'Areas'
CREATE TABLE Areas (
AreaID INT IDENTITY(1,1) PRIMARY KEY,
Areaname VARCHAR(60) UNIQUE NOT NULL
)

--Table 'Workspaces'
CREATE TABLE Workspaces (
AreaID INT
CONSTRAINT ck_a_areaid REFERENCES Areas(AreaID)
ON DELETE CASCADE
ON UPDATE NO ACTION,
SurfaceID INT IDENTITY(1,1)
CONSTRAINT ck_surfaceid CHECK (surfaceid > 0 AND surfaceid < 1001),
Description VARCHAR(300) NOT NULL,
CONSTRAINT ck_workspaces PRIMARY KEY (AreaID, SurfaceID)
)
Run Code Online (Sandbox Code Playgroud)

当我使用上面的代码时,我在不同的区域创建新的工作区时会得到这样的结果:

AreaID    SurfaceID
1         1
1         2
1         3
2         4
2         5
3         6
Etc...
Run Code Online (Sandbox Code Playgroud)

但我希望SurfaceID在每个新的areaID上从1重新计算,所以我想要的结果是这样的:

AreaID    SurfaceID …
Run Code Online (Sandbox Code Playgroud)

sql sql-server identity increment

13
推荐指数
2
解决办法
8057
查看次数

标签 统计

identity ×1

increment ×1

sql ×1

sql-server ×1