Как получить начальное значение последовательности из максимального значения другой таблицы - PullRequest
0 голосов
/ 23 июня 2019

Я пытаюсь вставить группу значений в таблицу, но в ней нет столбца IDENTITY, и мне нужно вставить уникальное значение в это поле.И порядковый номер должен начинаться на основе предыдущего значения, присутствующего в этом же поле.

Допустим, у меня есть такая таблица

create table testTable (id int, fieldA varchar (20))
insert into testTable 
values (6,'Nick'),(7,'Tom')

Теперь следующее значение, которое я вставляю в поле идентификаторадолжно быть 8, а следующий ряд должен быть 9 и т. д. ...

И ниже последовательность, которую я создал;и не работает

CREATE SEQUENCE testTable_seq
declare @maxy int = ((select max(ID) from testTable) + 1)
START WITH @maxy
INCREMENT BY   1

Я ожидаю, что нижеприведенная вставка должна получить следующее значение из созданной мной последовательности или просто получить следующее последовательное число из предыдущего поля идентификатора

insert into testTable 
values (testTable_seq.next value,'Harry')

1 Ответ

4 голосов
/ 23 июня 2019

Вы не можете сделать это, если вы видите аргументы в документах. 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)
); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...