问题
I am creating a sequence in sybase but getting mentioned exception, can anyone please help?
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
Exception:
[Error] Script lines: 1-14 ------------------------- Incorrect syntax near the keyword 'REPLACE'. Msg: 156, Level: 15, State: 2 [Executed: 7/7/14 2:06:02 PM EDT ] [Execution: 0/ms]
[Error] Script lines: 15-19 ------------------------ Incorrect syntax near 'USAGE'. Msg: 102, Level: 15, State: 84
[Error] Script lines: 15-19 ------------------------ Incorrect syntax near 'USAGE'. Msg: 102, Level: 15, State: 84
[Error] Script lines: 15-19 ------------------------ Incorrect syntax near 'USAGE'. Msg: 102, Level: 15, State: 84
[Executed: 7/7/14 2:06:02 PM EDT ] [Execution: 0/ms]
回答1:
Sybase ASE does not have sequence, the code you found is likely pulled from Sybase IQ or possible SQL Anywhere.
Instead of using sequence, you should look at using IDENTITY columns instead.
If that does not suit your needs, Sybase suggests a number of other approaches that may give you what you are looking for.
Methods:
Methods which can be used to produce a monotonic series are:
Max Plus One
Enhanced Max Plus One
Next Key Table
Identity Property
All of these are detailed in the linked document.
I would also suggest reviewing page 20 of this presentation on Migration from Oracle to ASE from SAP Techwave. There is some sample code on how to emulate SEQUENCE using a sequence table/procedure.
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
Outdated Link - http://www.sybase.com/detail?id=860
来源:https://stackoverflow.com/questions/24616967/sybase-sequence