gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:09:16 24 4
gpt4 key购买 nike

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

最佳答案

在 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

输出

MaxID
2

如果您正在寻找表标识值,请参阅@AdaTheDev 的回答。

关于sql - 如果 [ColumnName] 是自动递增 int 类型,似乎 SELECT MAX([ColumnName]) 从已删除的记录中返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4143717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com