我正在尝试在表中插入一堆值,但是它没有IDENTITY列,因此我需要在该字段中插入一个唯一值。 并且序列号应基于同一字段中存在的先前值开始。
让我说我有一张这样的桌子
create table testTable (id int, fieldA varchar (20))
insert into testTable
values (6,'Nick'),(7,'Tom')
现在我在ID字段中插入的下一个值应为8,下一行应为9,依此类推...
下面是我创建的序列;并且不起作用
CREATE SEQUENCE testTable_seq
declare @maxy int = ((select max(ID) from testTable) + 1)
START WITH @maxy
INCREMENT BY 1
我希望下面的插入内容应该从我创建的序列中获取下一个值,或者只是从先前的ID字段中获取下一个序列号
insert into testTable
values (testTable_seq.next value,'Harry')
答案 0 :(得分:4)
您无法执行此操作,如果您在文档 CREATE SEQUENCE
中看到了自变量,则说明START WITH
的值应为常数,与INCREMENT BY
,MINVALUE
和MAXVALUE
从常量开始
我不明白您为什么要创建一个SEQUENCE
以便将值插入表中,而且MAX()
并不会如您所愿,相反,您可以简单地
CREATE TABLE TestTable(
ID INT IDENTITY(1, 1) NOT NULL,
AColumn VARCHAR(20),
CONSTRAINT PK_TestTable_ID PRIMARY KEY(ID)
);