如果[ColumnName]是自动增量int类型,SELECT MAX([ColumnName])似乎从已删除的记录中返回值

Ape*_*ure 2 sql sql-server

在SQL Server或其他数据库中,如果列是自动增量int类型,即使记录已被删除,表也能记住最高值.假设您有一个表,其中包含一些先前已删除的记录,然后您使用SELECT MAX([ColumnName]),它可能返回与已删除记录关联的值.有没有人见过这样的场景?

Adr*_*der 5

在Sql Server中不会发生这种情况SELECT MAX(从下面的脚本中可以看出).

CREATE TABLE TEST_TABLE (
        ID INT IDENTITY (1,1),
        Val INT
)

INSERT INTO TEST_TABLE (Val) SELECT 1
INSERT INTO TEST_TABLE (Val) SELECT 2
INSERT INTO TEST_TABLE (Val) SELECT 3
INSERT INTO TEST_TABLE (Val) SELECT 4
INSERT INTO TEST_TABLE (Val) SELECT 5

DELETE FROM TEST_TABLE WHERE Val >= 3

SELECT  MAX(ID) MaxID
FROM    TEST_TABLE

DROP TABLE TEST_TABLE
Run Code Online (Sandbox Code Playgroud)

产量

MaxID
2
Run Code Online (Sandbox Code Playgroud)

如果您正在查找表标识值,请参阅@AdaTheDev答案.

  • 它不会返回已删除的记录.这就是这个脚本向您展示的内容. (2认同)