这是一个初学者的问题。因为我现在无法访问Microsoft SQL Server。我的问题是关于自动增量功能。
http://s10.postimg.org/lev8tvu7t/image.jpg
请看一下上表。假设id字段有 给定Microsoft SQL Server中的自动增量选项。怎么了 如果我删除第三行?我的意思是编号会发生什么? ID 103会自动更改为102吗?或者它会 保持不变,省略'102'号码?
我也有另一个问题......
http://s30.postimg.org/7exbjw7r5/image.jpg
在上表中,假设我已截断所有字段。 之后我插入了另一组值。会发生什么 ID(自动增量开)字段。新输入的ID是多少? 细节 ??它会是105,106等,还是会从1开始 ?? (在显示的示例中,ID从100开始,只是认为它开始 来自1)。
我也想知道两种情况会发生什么。(即1.开启 截断表和2.删除所有表格详细信息)。
答案 0 :(得分:4)
您已插入的行将保持不变。你可以尝试一下:
CREATE TABLE dbo.floob(id INT IDENTITY(1,1), name NVARCHAR(32));
INSERT dbo.floob(name) VALUES(N'bob'),(N'frank'),(N'KRIZTE');
DELETE dbo.floob WHERE id = 2;
SELECT id, name FROM dbo.floob;
结果:
id name
-- ------
1 bob
3 KRIZTE
现在,第二个问题,不完全确定“截断所有字段”是什么意思 - 如果您从表中DELETE
,则会保留IDENTITY
序列。 e.g:
DELETE dbo.floob;
INSERT dbo.floob(name) SELECT N'aaron';
SELECT id, name FROM dbo.floob;
结果:
id name
-- -----
4 aaron
但是,如果您发出TRUNCATE TABLE
,则会重置IDENTITY
序列。
TRUNCATE TABLE dbo.floob;
INSERT dbo.floob(name) SELECT N'bert';
SELECT id, name FROM dbo.floob;
结果:
id name
-- ----
1 bert
有关详细信息,请参阅the documentation和Google。