我有一张桌子,我想让每个人指定其身份
这是我到目前为止所做的:
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开始。
类似的东西:
+----+------+ | id | Name | +----+------+ | 1 | a | | 2 | a | | 1 | b | | 3 | a | | 1 | c | | 2 | b | +----+------+
答案 0 :(得分:1)
Identity(1,1)创建AUTO_INCREMENT字段。如果“测试”人员以ID1开头,则“test”和“Tim”之间会发生冲突,因为您将[Duik_nr]定义为主键(不能有重复值)。所有主键只能包含每个值的一个实例。这就是为什么你得到(2,TIM)已经存在的错误。表格中已经有一个ID 2和一个名字“Tim”。
我相信您之前的记录或您的身份种子设置为更高的数字,因此AUTO_INCREMENT从更高的数字开始。 击>
<击> Reset identity seed after deleting records in SQL Server 击>