#sql #sql-server #asp.net-mvc
#sql #sql-сервер #asp.net-mvc
Вопрос:
Это может показаться глупым, и это не влияет на мой код, но из любопытства, что заставляет «идентификатор» автоматического приращения отменяться таким образом, а не увеличиваться правильно?
Комментарии:
1. Нет оснований предполагать, что строки отображаются в том порядке, в котором они были вставлены — я полагаю, это то, что вы имеете в виду? В SQL Server строки упорядочиваются известным образом только при наличии
order by
предложения.2. вы изменили кластеризованный индекс?
3. У вас есть скриншот структуры таблицы? Это показало бы нам, что происходит.
4. Кто знает, зачем беспокоиться? Если вы хотите получить результат в порядке идентификатора, используйте ORDER BY . Никогда, никогда не создавайте приложение в зависимости от «предполагаемого» порядка.
5. @2766 нет способа узнать, почему, и это не имеет значения, так как работает SQL Server… если вы не укажете order by, вы получите random … что в некоторых случаях (достаточно, чтобы, возможно, заставить вас думать, что это всегда так) — это порядок вставки.
Ответ №1:
Идентификатор с автоматическим увеличением в порядке. Проблема заключается в запросе, который, предположительно, представляет собой что-то вроде:
select *
from users;
Этот запрос не имеет order by
. Следовательно, результаты могут быть возвращены в любом порядке. И порядок может меняться от одной строки к следующей.
Чтобы увидеть результаты в определенном порядке, вам всегда нужно включить order by
их в запрос. Этот запрос может быть сгенерирован инструментом, поэтому вы не можете его контролировать.
На практике я бы ожидал, что результаты в небольшой таблице будут в порядке кластеризованного индекса. Позвольте мне подчеркнуть, что это не гарантировано, но часто имеет место. Итак, если другой столбец объявлен как первичный ключ или явно как кластеризованный индекс, то порядок может отображаться по этому столбцу.
Ответ №2:
Я думаю, что ID не является первичным ключом. Если вы можете сделать ID в качестве первичного ключа, строка должна быть в правильном порядке.
Комментарии:
1. Этот ответ изначально неверен. Если нет ORDER BY , вы не должны предполагать какой-либо конкретный порядок. Кроме того, вы путаете первичный ключ и ключ кластеризации.