Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 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

Удачи.




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




Наверх





Память: 0.72 MB
Время: 0.05 c
4-66387           dumbs                 2001-11-06 14:03  2002.01.21  
как построить механизм типа отображения чего либо как в RationalRose отображаются диагарммы и их связи?


7-66376           Dmitry V. Averuanov   2001-10-08 16:17  2002.01.21  
Освобождение памяти при завершении процесса.


6-66334           Lamok                 2001-10-24 17:09  2002.01.21  
Tcp/ip


4-66397           SemFLY                2001-11-21 02:16  2002.01.21  
Ничего не понимаю !?!? :(((( RasHangUp


6-66322           star                  2001-10-24 12:20  2002.01.21  
как определить, кто подключен к машине?