loc*_*ies 1 sql-server auto-increment
这是一个初学者的问题。因为我现在无法访问 Microsoft SQL Server。我的问题是关于自动增量功能。
http://s10.postimg.org/lev8tvu7t/image.jpg
看看上表就知道了。假设 id 字段在 Microsoft SQL Server 中提供了一个 Auto Increment 选项。如果我删除第三行会发生什么?我的意思是编号会发生什么?ID 103会自动改成102吗??或者它会保持不变,省略“102”数字?
另外我还有一个问题...
http://s30.postimg.org/7exbjw7r5/image.jpg
在上表中,假设我已经截断了所有字段。之后,我插入了另一组值。ID (Auto Increment ON) 字段会发生什么。新输入的详细信息的 ID 是什么?它会是 105、106 等等,还是会从 1 重新开始??(在显示的示例中,ID 从 100 开始,只是认为它从 1 开始)。
我也想知道在这两种情况下会发生什么。(即,1. 截断表和 2. 删除所有表详细信息)。
您已经插入的行将保持不变。你可以试试:
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;
Run Code Online (Sandbox Code Playgroud)
结果:
id name
-- ------
1 bob
3 KRIZTE
Run Code Online (Sandbox Code Playgroud)
现在,第二个问题,不太确定您所说的“截断所有字段”是什么意思-如果您DELETE
从表中取出,IDENTITY
则保持顺序。例如:
DELETE dbo.floob;
INSERT dbo.floob(name) SELECT N'aaron';
SELECT id, name FROM dbo.floob;
Run Code Online (Sandbox Code Playgroud)
结果:
id name
-- -----
4 aaron
Run Code Online (Sandbox Code Playgroud)
但是,如果您发出TRUNCATE TABLE
,IDENTITY
则会重置序列。
TRUNCATE TABLE dbo.floob;
INSERT dbo.floob(name) SELECT N'bert';
SELECT id, name FROM dbo.floob;
Run Code Online (Sandbox Code Playgroud)
结果:
id name
-- ----
1 bert
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4414 次 |
最近记录: |