Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Использовать свободные идентификаторы  [new]
AspUser
Member

Откуда:
Сообщений: 145
Добрый день! Можно ли настроить таблицу так чтобы IDENTITY создавался следующий от максимального существующего, а не следующий от когда либо созданного? Например создал строку допустим id=3, удалил эту строку создаешь заново и уже id=4, удалил эту строку создаешь заново и уже id=5, и т.д. Хочется просто максимальный существующий id+1.
CREATE TABLE [dbo].[CategoriesNews] (
    [Id]       INT NOT NULL PRIMARY KEY IDENTITY(1,1),
    [Name]                 VARCHAR (100)  NOT NULL,
    [Description]          NTEXT          NOT NULL
  
);
9 окт 14, 09:53    [16680147]     Ответить | Цитировать Сообщить модератору
 Re: Использовать свободные идентификаторы  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1887
уберите identity и в тригере insted off сами вставляйте нужный ID
9 окт 14, 09:58    [16680180]     Ответить | Цитировать Сообщить модератору
 Re: Использовать свободные идентификаторы  [new]
iap
Member

Откуда: Москва
Сообщений: 47198
AspUser
Хочется просто максимальный существующий id+1
С какой целью?
9 окт 14, 10:12    [16680250]     Ответить | Цитировать Сообщить модератору
 Re: Использовать свободные идентификаторы  [new]
AspUser
Member

Откуда:
Сообщений: 145
Не понимаю как это оформить что бы правильно создать таблицу, если не трудно подскажите

CREATE TABLE [dbo].[CategoriesNews] (
    [Id]       INT NOT NULL PRIMARY KEY ,
    [Name]                 VARCHAR (100)  NOT NULL,
    [Description]          NTEXT          NOT NULL
  
);

CREATE TRIGGER [NewId]
	ON [dbo].[CategoriesNews]
	FOR  INSERT
	AS
	BEGIN
		как тут сказать максимальный id+1
	END
9 окт 14, 10:18    [16680286]     Ответить | Цитировать Сообщить модератору
 Re: Использовать свободные идентификаторы  [new]
Glory
Member

Откуда:
Сообщений: 104751
AspUser
как тут сказать максимальный id+1

Найти запись с наибольшим id - как же еще
9 окт 14, 10:19    [16680293]     Ответить | Цитировать Сообщить модератору
 Re: Использовать свободные идентификаторы  [new]
AspUser
Member

Откуда:
Сообщений: 145
[/quot]С какой целью?[/quot] Визуально очень путает
9 окт 14, 10:21    [16680300]     Ответить | Цитировать Сообщить модератору
 Re: Использовать свободные идентификаторы  [new]
Crimean
Member

Откуда:
Сообщений: 13147
AspUser
Визуально очень путает


а вы напишите эффективную конкурентную раздачу идентификаторов
увидите откуда "дырки" и почему они не перевыдаются
9 окт 14, 10:27    [16680335]     Ответить | Цитировать Сообщить модератору
 Re: Использовать свободные идентификаторы  [new]
aleks2
Guest
AspUser
С какой целью?[/quot] Визуально очень путает[/quot]
Не майся фигней.
1. Если тибя парят "дырки" - лечись у психоаналитика.
2. Если тебе не хватает есмости - сделай поле bigint.

И минуют тя геморрой и пичали...
9 окт 14, 10:27    [16680336]     Ответить | Цитировать Сообщить модератору
 Re: Использовать свободные идентификаторы  [new]
Glory
Member

Откуда:
Сообщений: 104751
AspUser
Визуально очень путает

Кого ? Налоговую ? Бухгалтера ?
А "провал" 1,2, 99, 100, 101 не путает ? Главное, чтобы два последних номера шли по порядку ?
9 окт 14, 10:30    [16680360]     Ответить | Цитировать Сообщить модератору
 Re: Использовать свободные идентификаторы  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 28355
AspUser
Визуально очень путает
Хм...

Было пять записей с идентификаторами 1, 2, 3, 4, 5 соотвественно. Удалили 2, 3, 4.
Визуально видим 1, 5. Значит 2, 3, 4 удалили.

Было четыре записи с идентификаторами 1, 2, 3, 4. Удалили 2, 3, 4. Добавили 5.
Визуально видим 1, 5. Значит 2, 3, 4 удалили.

Где путаница? При любом раскладе то, чего нет, то удалили :)
9 окт 14, 10:31    [16680365]     Ответить | Цитировать Сообщить модератору
 Re: Использовать свободные идентификаторы  [new]
AspUser
Member

Откуда:
Сообщений: 145
Уговорили , что не надо так делать. Просто таблицы с небольшим количеством записей, и удаляется как правило часто последняя строка вот тут и хотелось чтобы счетчик не рос, думал может можно как-то штатно включить такой режим.
9 окт 14, 10:50    [16680489]     Ответить | Цитировать Сообщить модератору
 Re: Использовать свободные идентификаторы  [new]
Glory
Member

Откуда:
Сообщений: 104751
AspUser
тут и хотелось чтобы счетчик не рос,

Так просто не отображайте это поле
9 окт 14, 10:52    [16680507]     Ответить | Цитировать Сообщить модератору
 Re: Использовать свободные идентификаторы  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9160
Бухгалтеру нумеруйте строчки на клиенте, а не показывайте ID.
9 окт 14, 11:55    [16680940]     Ответить | Цитировать Сообщить модератору
 Re: Использовать свободные идентификаторы  [new]
Crimean
Member

Откуда:
Сообщений: 13147
use tempdb
go

create table #a ( id int identity(1,1), flag int )
insert into #a( flag ) values( 1 )
select * from #a

begin tran

insert into #a( flag ) 
select 2 as flag
union all select 3
union all select 4
union all select 5
union all select 6
union all select 7
union all select 8
union all select 9
union all select 10

rollback tran

insert into #a( flag ) values( 11 )
select * from #a

go

drop table #a
go
9 окт 14, 12:12    [16681064]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить