Не удается создать последовательность в SQL Server 2008 - PullRequest
5 голосов
/ 30 августа 2011

Я попытался создать последовательность в SQL Server 2008, используя следующий запрос,

CREATE SEQUENCE serial START 100

Я получил следующую синтаксическую ошибку,

Сообщение 102, Уровень 15, Состояние 1, Строка 1
Неверный синтаксис рядом с 'SEQUENCE'.

Как создать последовательность в SQL Server 2008?

Ответы [ 3 ]

11 голосов
/ 30 августа 2011

Вы просто не можете этого сделать.

SQL Server 2008 не имеет понятия SEQUENCE - это новая функция в SQL Server 2012 (документация MSDN здесь) .

Как правило, вы хотите создать «автоматически увеличивающийся» столбец для вашей таблицы - в этом случае вместо него используйте атрибут столбца IDENTITY:

CREATE TABLE dbo.YourTable
( TableID INT IDENTITY,
 .....
1 голос
/ 30 августа 2011

Используйте столбец IDENTITY для вашей задачи.

Получите полную информацию о msdn: IDENTITY

0 голосов
/ 05 ноября 2015

Как писал marc_s, в SQL Server 2008 еще нет последовательностей. Но мы можем использовать некоторую хитрость для имитации поведения последовательностей. Иногда нам нужно сгенерировать идентификатор для некоторой таблицы без вставки каких-либо данных. Или сгенерируйте идентификаторы для разных таблиц. В такой ситуации я использую эту структуру.

Создать таблицу:

create table IdSequence (id int identity(1,1))

Затем я использую этот скрипт для генерации идентификатора:

begin tran 
 insert into IdSequence output inserted.id default values 
rollback tran

В моем приложении это выглядит так:

    public Int32 GetNextId()
    {
        Int32 id = 0;
        using (var transaction = Session.BeginTransaction())
        {
            id = Session.CreateSQLQuery("insert IdSequence output inserted.id default values").UniqueResult<Int32>();
            transaction.Rollback();
        }

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