我在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]
答案 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