使用别名重新启动SQL序列

时间:2017-03-02 05:42:30

标签: sql-server sql-server-2012 sequence

我想这样做,一个序列以某列的最大值(+1)开始。这是我到目前为止所得到的:

SELECT MAX(customer_number)+1 AS HighestCustomerNumberPlusOne FROM organisation;

CREATE SEQUENCE customer_number_sequence
    START WITH 1
    INCREMENT BY 1;

ALTER SEQUENCE customer_number_sequence RESTART WITH HighestCustomerNumberPlusOne;

我收到错误:

Error: Incorrect syntax near 'HighestCustomerNumberPlusOne'.
SQLState:  S0001
ErrorCode: 102

正确的语法是什么?我使用SQL Server 2012,但如果可能的话,我更喜欢通用SQL,因为T-SQL比学习中文更难。

1 个答案:

答案 0 :(得分:1)

ALTER SEQUENCE语法只接受RESTART WITH子句中的常量。

因此,您必须将查询结果保存到变量中;使用ALTER SEQUENCE SQL命令构造一个字符串,并将该变量的值嵌入SQL文本中,然后使用EXECsp_executesql将其作为动态SQL执行。

但是,通常不需要重置序列。

真正需要什么?