增加组指定的id

问题描述 投票:0回答:1

我有一张桌子,我想让它的每人指定ID

这是我到目前为止所拥有的:

CREATE TABLE [dbo].[Duiken] (
    [Duik_nr]          INT           IDENTITY (1, 1) NOT NULL,    // ID
    [datum]            DATE          NULL,
    [naam]             VARCHAR (50)  NOT NULL,                    // Person
    [buddy]            VARCHAR (50)  NULL,
    [locatie]          VARCHAR (50)  NULL,
    [zicht]            INT           NULL,
    [lucht_temp]       INT           NULL,
    [water_temp]       INT           NULL,
    [fles_Groote]      VARCHAR (50)  NULL,
    [duik_tijd]        INT           NULL,
    [max_duik_diepte]  INT           NULL,
    [lucht_in]         INT           NULL,
    [lucht_uit]        INT           NULL,
    [lucht_verbruik]   AS            ([lucht_in]-[lucht_uit]),
    [lood]             INT           NULL,
    [oefenduik]        BIT           NULL,
    [recreatieve_duik] BIT           NULL,
    [zoetwater_duik]   BIT           NULL,
    [zoutwater_duik]   BIT           NULL,
    [stilstaand_water] BIT           NULL,
    [stromend_water]   BIT           NULL,
    [nacht_duik]       BIT           NULL,
    [nitrox_duik]      BIT           NULL,
    [zonnig]           BIT           NULL,
    [bewolkt]          BIT           NULL,
    [regen]            BIT           NULL,
    [Opmerkingen]      VARCHAR (MAX) NULL,
    PRIMARY KEY ([naam],[Duik_nr])
);

但是当我以新名称添加新记录时,它会继续使用表中的最高 ID。

我现在得到的结果

所以“测试”者也应该以 ID 1 开头,而不是 53。

类似这样的:

+----+-----+
|编号 |名称 |
+----+------+
|  1 |一个 |
|  2 |一个 |
|  1 |乙|
|  3 |一个 |
|  1 | c |
|  2 |乙|
+----+------+
database
1个回答
1
投票

Identity(1, 1) 创建一个 AUTO_INCRMENT 字段。如果“test”人员以 ID1 开头,那么“test”和“Tim”之间将会发生冲突,因为您将 [Duik_nr] 定义为主键(不能有重复的值)。所有主键的每个值只能有一个实例。这就是为什么您会收到 (2, TIM) 已存在的错误。表中已存在 ID 2 和名称“Tim”。

我相信您之前有记录或者您的身份种子设置为更高的数字,因此 AUTO_INCRMENT 将从更高的数字开始。

在 SQL Server 中删除记录后重置身份种子

© www.soinside.com 2019 - 2024. All rights reserved.