Ограничение 1 identity на таблицу

Откуда такое ограничение? почему нельзя навесить два нумератора на таблицу? Ограничение из-за собственной ограниченности, i think.

Forums: 

Изображение пользователя st.

Удобно пользоваться последоват

Удобно пользоваться последовательностями (нумераторами).
Эмуляция Oracle sequence в MS SQL.

Эта реализация чревата блокировками при интенсивной вставке, надо делать вызов вне транзакции.
Зато одна таблица на все последовательности.

CREATE TABLE counters (
  name sysname,
  value int,
  CONSTRAINT PK_COUNTERS PRIMARY KEY NONCLUSTERED (name)
)
GO
 
CREATE PROCEDURE GetNextValue(@counter sysname, @value int out)
AS BEGIN
  UPDATE Counters
    SET @value = value = value + 1
    WHERE counter = @counter
END

А эта посложнее, но без блокировок. На каждую последовательность (нумератор) своя таблица.

CREATE TABLE counter_myname (
  value int identity(1, 1),
  foo bit,
  CONSTRAINT PK_COUNTERS PRIMARY KEY NONCLUSTERED (value)
)
GO
 
CREATE PROCEDURE GetNextMyNameValue(@value int out)
AS BEGIN
  SET NOCOUNT ON;
  IF @@trancount > 0
    SAVE TRANSACTION tnx_GetNextMyNameValue
  ELSE
    BEGIN TRANSACTION tnx_GetNextMyNameValue
  INSERT INTO counter_myname (foo) VALUES (0);
  SET @value = @@IDENTITY
  ROLLBACK TRANSACTION tnx_GetNextMyNameValue
END

Изображение пользователя ipanshin.

Я говорю о таком сценарии<

Я говорю о таком сценарии

create table x
a...,
num int identity,
)
go

alter table x add numagain int identity
go

Я не хочу думать о нумерации, но я хочу добавлять и удалять свою колонку. А это у меня не получается. Приходится пользоваться колонкой guid uniqueidentifier, что гораздо более тяжеловесней.
Даже у Кащея (Бессмертного) был свой счет и он получал ( не сомневаюсь) новое качество денежных средств.

Кстати, на почве реализации репликации выросла огромная и интересная тема кластеризации объектов между аналогичными системами. Например, несколько Доксвижен хотят делить между собой определенные грозди объектов. Уверен, что эта тема представляет интерес для всех систем. Ведь какое интересное решение: всю передачу выполняет схема репликации от микрософт, а работаешь в поле своих объектов, делая настройку схемы репликации. Надо только синтегрировать часть перевода твоих объектов в объекты БД.

Кластер или в переводе гроздь применительно к объектам БД:
ГРОЗДЬ ОБЪЕКТОВ, или ГРОЗДЬ ВИНОГРАДА. Звучит приятно.

19

Убийца-время! Суща смерть в тебе
Затупит когти и поглотит плод,
Приручит зверя, что сидит во лбе,
И Феникса восставшего сожгет.

Убийственное время может все
И даже смертью смерть попрать в конце,
Но, в своем быстром беге, ты, не тронь чело
и красоту улыбки на ее лице.

Часы (что носят) - сувенир ее,
Кто маятником, как косою, косит,
Оставь резец морщин и линий спрячь перо
Пусть красоту ее потомство превозносит.

А впрочем продолжай и резать и писать,
В моих стихах ее красу тебе уж не достать.

Согласен, sequence в Оракл гиб

Согласен, sequence в Оракл гибче, но требует больше усилий при программировании.
Identity из серии "создал и забыл", но работает нормально только в тривиальных случаях.