Sybase序列

时间:2014-07-07 18:08:31

标签: sequence sybase-ase

我在sybase中创建一个序列但是被提到异常,有人可以帮忙吗?

CREATE OR REPLACE SEQUENCE dbo.event_id_sequence
    START WITH 100
    INCREMENT BY 1
    MINVALUE 100
    NO MAXVALUE
    NO CACHE  
    NO CYCLE    
go

GRANT USAGE ON SEQUENCE dbo.event_id_sequence TO userID maintenance
GRANT USAGE ON SEQUENCE dbo.event_id_sequence TO userID readonly
GRANT USAGE ON SEQUENCE dbo.event_id_sequence TO userID reports
go

例外:

  

[错误]脚本行:1-14 -------------------------    关键字“REPLACE”附近的语法不正确。    消息:156,等级:15,状态:2    [执行时间:美国东部夏令时间7/7/14 2:06:02] [执行:0 / ms]

     

[错误]脚本行:15-19 ------------------------    “USAGE”附近的语法不正确。    消息:102,等级:15,状态:84

     

[错误]脚本行:15-19 ------------------------    “USAGE”附近的语法不正确。    消息:102,等级:15,状态:84

     

[错误]脚本行:15-19 ------------------------    “USAGE”附近的语法不正确。    消息:102,等级:15,状态:84

[执行时间:美国东部夏令时间7/7/14 2:06:02] [执行:0 / ms]

1 个答案:

答案 0 :(得分:1)

Sybase ASE没有sequence,您找到的代码可能是从Sybase IQ或可能的SQL Anywhere中提取的。

您应该考虑使用IDENTITY columns而不是sequence

如果这不符合您的需求,Sybase suggests许多其他方法可能会为您提供所需的信息。

  

<强>方法:

     

可用于产生单调序列的方法是:

     

Max Plus One

     

增强型Max Plus One

     

下一个关键表

     

身份属性

所有这些都在链接文档中详细说明。

我还建议您在SAP Techwave的Migration from Oracle to ASE上查看此演示文稿的第20页。有一些关于如何使用序列表/过程模拟SEQUENCE的示例代码。

CREATE TABLE my_seq (seq int) 
go 
//initialize the sequence 
INSERT INTO my_seq select 0 
go 
CREATE PROCEDURE get_seq (@seq int OUTPUT) 
AS UPDATE my_seq SET seq = seq+1 
SELECT @seq = seq FROM my_seq 
go 
// execute the sp to get the next sequence number 
DECLARE @seq int 
EXEC get_seq @seq OUTPUT 
INSERT INTO m_table VALUES (@seq,..) 
go

过时的链接 - http://www.sybase.com/detail?id=860