2014-07-07 35 views
2

我正在sybase中創建一個序列,但得到提及異常,任何人都可以請幫忙嗎?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'的語法不正確。 Msg:156,Level:15,State:2 [執行時間:7/7/14 2:06:02 PM EDT] [執行:0/ms] ----------------------- 'USAGE'附近語法不正確。 Msg:102,等級:15,狀態:84

[錯誤]腳本行:15-19 ------------------------ 'USAGE'附近語法不正確。 Msg:102,等級:15,狀態:84

[錯誤]腳本行:15-19 ------------------------ 'USAGE'附近語法不正確。 消息:102,等級:15,狀態:84

[執行時:14年7月7日下午2點06分02秒EDT] [執行:0 /毫秒]

回答

1

Sybase ASE的不具有sequence,您找到的代碼可能是從Sybase IQ或可能的SQL Anywhere中提取的。

而不是使用sequence,您應該使用IDENTITY columns來代替。

如果這不符合您的需求,Sybase suggests許多其他方法可能會給你你想要的。

方法:

方法可用於產生單調系列有:

最多加一

增強的最大加一

下一頁鍵表

標識屬性

所有這些都在鏈接文檔中詳細說明。

我也會建議查看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

+1

感謝邁克爾。 – user3233451