我想这样做,一个序列以某列的最大值(+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比学习中文更难。
答案 0 :(得分:1)
ALTER SEQUENCE
语法只接受RESTART WITH
子句中的常量。
因此,您必须将查询结果保存到变量中;使用ALTER SEQUENCE
SQL命令构造一个字符串,并将该变量的值嵌入SQL文本中,然后使用EXEC
或sp_executesql
将其作为动态SQL执行。
但是,通常不需要重置序列。
你真正需要什么?