У меня есть таблица с этой структурой:SQL Server - Порядок идентификации полей в таблице
CREATE TABLE [dbo].[cl](
[ID] [int] IDENTITY(1,1) NOT NULL,
[NIF] [numeric](9, 0) NOT NULL,
[Name] [varchar](80) NOT NULL,
[Address] [varchar](100) NULL,
[City] [varchar](40) NULL,
[State] [varchar](30) NULL,
[Country] [varchar](25) NULL,
Primary Key([ID],[NIF])
);
Представьте себе, что эта таблица имеет 3 записей. Запись 1, 2, 3 ... Когда я удаляю Record number 2, поле IDENTITY генерирует Gap. Затем таблица имеет запись 1 и запись 3. Ее не правильно!
Даже если я использую:
DBCC CHECKIDENT('cl', RESEED, 0)
Это не решает мою проблему becuase будет установить идентификатор следующего вставленной записи 1. И это не исправить либо потому, что таблица будет иметь несколько ID ,
Кто-нибудь знает об этом?
Разрыв, который вам не нравится, есть специально. Это явный признак того, что есть что-то, перед чем сейчас отсутствует. Представьте, что в таблице содержатся финансовые транзакции, и кто-то совершает несанкционированную транзакцию и пытался скрыть ее, удалив ее из таблицы.Затем вы можете сразу сказать, что одна транзакция отсутствует (которую вы можете потенциально восстановить из журнала аудита, резервных копий или из трасс. Если вы хотите постоянно записывать записи, то «identity (1,1)» не является тем, что вы ищете. – Ralph
Представьте, если в таблице было 1 миллион записей, и вы удаляете запись 2. Вы не хотите, чтобы база данных меняла ключ для всех этих записей (и любых внешних ключей, указывающих на все эти записи). это стандартное поведение, к которому вам придётся привыкнуть, если вы хотите получить идентификатор. В противном случае вам придется создавать и использовать свои собственные ключи (и гарантировать их обманирование). –
@Ralph У меня нет большого опыта работы с SQL Server. То, что я ищу, является полем AUTO_INCREMENT, как в MySQL, когда когда-либо я вставляю что-то, что он автоинкремент, а когда я удаляю, есть триггер, который всегда конфигурируется, чтобы «перестроить» поле «Auto increment». И это то, что я ищу в SQL. – rui404