Как создать уникальное возрастающее целочисленное значение в SQL Server? - PullRequest
2 голосов
/ 09 февраля 2012

У меня следующая проблема. В таблице SQL хранятся элементы заданий, и каждый элемент имеет state. Элементы могут изменять состояния, а также другие свойства вместе или по отдельности. Я хочу иметь возможность назначать каждому элементу задания уникальное увеличивающееся целое число (64 или более битов), которое будет назначаться только при моем запросе, а не обновляться при каждом обновлении, как timestamp. Поэтому я хочу иметь возможность выполнять две операции:

  1. обновить некоторые другие поля без изменения этого целого числа в строке и
  2. состояние обновления и целое число

и при изменении целого числа оно должно быть больше, чем у всех других целых чисел, когда-либо созданных для этого столбца (конечно же, для каждой таблицы или базы данных).

Это должно быть масштабируемым, чтобы несколько клиентов могли работать с базой данных без серьезных штрафов.

Как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 09 февраля 2012

Смотрите здесь http://blogs.msdn.com/b/sqlazure/archive/2010/07/15/10038656.aspx. Должно помочь

Но в двух словах вам нужно поле, объявленное в вашей таблице следующим образом:

Id bigint PRIMARY KEY IDENTITY (1,1)
2 голосов
/ 09 февраля 2012

Звучит так, будто тебе нужна ПОСЛЕДОВАТЕЛЬНОСТЬ.

Это не связано с вашей таблицей (в отличие от IDENTITY) и может быть таблицей или базой данных: до вас.

Последовательности поддерживаются в готовящемся выпуске SQL Server 2012, но до тех пор вы не сможетеможет подражать одному согласно этому вопросу dba.se: https://dba.stackexchange.com/q/3307/630

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...