Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];

Вниз

Поле типа Identity - как задать значение, с которого начинать нумерацию?   Найти похожие ветки 

 
fishka   (2001-12-18 12:10) [0]

В таблице есть поле типа Identity. При удалении записей из таблицы и добавлении других происходит наращивание значения в данном поле для вновь добавленных записей.
Например, были значения 1-50. Удалили записи. Добавили 35 записей. В данном поле получились значения 51-85. А хочется, чтобы были 1-35.
Как сделать, чтобы минимальным в данном поле всегда было значение 1 (не удаляя при этом таблицу)?


 
Delirium   (2001-12-18 12:18) [1]


ALTER TABLE My_Table DROP COLUMN column_ident
ALTER TABLE My_Table ADD column_ident Identity(1,1)


 
Delirium   (2001-12-18 12:30) [2]

Ошибочка - писал не проверяя, теперь правильно :)

ALTER TABLE My_Table DROP COLUMN column_ident
ALTER TABLE My_Table ADD column_ident int Identity(1,1) not null


 
TSV   (2001-12-18 13:13) [3]

> fishka

По этому поводу хорошо написано в Books Online. Посмотри SET IDENTITY_INSERT. Также есть пример определения "дыр" для identity-поля в таблице.

Удачи.


 
fishka   (2001-12-18 16:08) [4]

Спасибо за ответы.
>TSV
В Books Online (Transact_SQL Reference 6.0) есть ссылка на SET IDENTITY_INSERT. Но примера нет. Ничего другого найти не удалось, да еще и английского я не знаю. Подскажите, пожалуйста, в каком разделе это описано.


 
TSV   (2001-12-18 17:26) [5]

> fishka

Находится это дело в IDENTITY (Property) (T-SQL).
Вот сам пример:

CREATE TABLE img (id_num int IDENTITY(1,1), company_name sysname)
INSERT img(company_name) VALUES ("New Moon Books")
INSERT img(company_name) VALUES ("Lucerne Publishing")

-- SET IDENTITY_INSERT ON and use in img table.
SET IDENTITY_INSERT img ON

DECLARE @minidentval int
DECLARE @nextidentval int
SELECT @minidentval = MIN(IDENTITYCOL) FROM img
IF @minidentval = IDENT_SEED("img")
SELECT @nextidentval = MIN(IDENTITYCOL) + IDENT_INCR("img")
FROM img t1
WHERE IDENTITYCOL BETWEEN IDENT_SEED("img") AND 2147483647 AND
NOT EXISTS (SELECT * FROM img t2
WHERE t2.IDENTITYCOL = t1.IDENTITYCOL + IDENT_INCR("img"))
ELSE
SELECT @nextidentval = IDENT_SEED("img")

-- ЗДЕСЬ МОЖНО ДЕЛАТЬ ВСТАВКУ ЗАПИСИ С IDENTITY = @nextidentval

SET IDENTITY_INSERT img OFF

Удачи.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.024 c
1-66228
Vacheslav
2002-01-01 20:30
2002.01.21
Тоскливо без старых операторов


3-66188
Sergiom
2001-12-14 08:21
2002.01.21
Не могу сделать refresh data.


1-66254
Builder
2002-01-03 17:00
2002.01.21
Копирование запущенного файла


1-66293
BFG
2002-01-04 21:18
2002.01.21
Mortal Combat 4


1-66232
StelZ
2002-01-03 03:25
2002.01.21
Отсечь заголовок





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский