不能在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没有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;
}