不能在SQL Server 2008中创建序列

本文关键字:创建 2008 SQL Server 不能 | 更新日期: 2023-09-27 18:06:54

我尝试在SQL Server 2008中使用以下查询创建一个序列,

CREATE SEQUENCE serial START 100

我得到以下语法错误,

留言102,第15层,第1状态,第1行
'SEQUENCE'附近语法错误。

如何创建一个序列在SQL Server 2008?

不能在SQL Server 2008中创建序列

你不能这么做。

SQL Server 2008没有SEQUENCE的概念-这是SQL Server 2012的新功能(MSDN文档在这里)。

通常,您希望创建一个"自动递增"列—在这种情况下,使用IDENTITY列属性代替:

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

利用IDENTITY列来完成你的任务。

获取msdn: IDENTITY

的详细信息

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