无法在SQL Server 2008中创建序列

时间:2011-08-30 04:47:48

标签: c# sql-server-2008 identity

我尝试使用以下查询

在SQL Server 2008中创建序列
CREATE SEQUENCE serial START 100

我收到以下语法错误,

  

Msg 102,Level 15,State 1,Line 1
  'SEQUENCE'附近的语法不正确。

如何在SQL Server 2008中创建序列?

3 个答案:

答案 0 :(得分:11)

你不能这样做。

SQL Server 2008没有SEQUENCE的概念 - 这是a new feature in SQL Server 2012 (MSDN documentation here)

通常,您希望为表格创建“自动增加”列 - 在这种情况下,请使用IDENTITY列属性:

CREATE TABLE dbo.YourTable
( TableID INT IDENTITY,
 .....

答案 1 :(得分:1)

使用IDENTITY列将完成您的任务。

获取有关msdn:IDENTITY

的完整详情

答案 2 :(得分:0)

marc_s如何写,SQL Server 2008还没有序列。 但我们可以使用一些技巧来模仿序列行为。有时我们需要为某些表生成标识符而不插入任何数据。 或者为不同的表生成ID。 在这种情况下,我使用这种结构。

创建一个表格:

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

然后我使用此脚本生成Id:

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;
    }