Вот пример использования вычисляемого столбца с идентификатором для такого рода вещей. Я хотел бы предположить, что хранение Видов в виде строки не является хорошим планом. Вы должны иметь таблицу видов, чтобы не вводить имя снова и снова. Это предотвращает опечатки, а также легко допускает поддержку нескольких языков. Кроме того, обратите внимание, что правильное заполнение нулями, как у вас, имеет встроенное ограничение системы. В конце концов он будет исчерпан числами.
create table Animal
(
AnimalID int identity
, Species varchar(10) --this should really be a foreign key instead of the name over and over
, Sex char(1) not null
, UniqueID as Concat(Species, Sex) + right(replicate('0', 8) + convert(varchar(10), AnimalID), 6) --this pads the identity value to a max length of 6.
)
insert Animal values
('Deer', 'M')
, ('Deer', 'M')
, ('Deer', 'M')
, ('Deer', 'F')
, ('Deer', 'F')
, ('Deer', 'F')
, ('Deer', 'F')
, ('Deer', 'F')
, ('Goat', 'F')
, ('Goat', 'F')
, ('Goat', 'M')
, ('Goat', 'M')
, ('Goat', 'M')
, ('Goat', 'M')
select *
from Animal
Если вы действительно хотите использовать последовательность, базовый синтаксис такой простой.
create sequence MySequence as int start with 1 increment by 1
select next value for MySequence
Вы можете найти тысячи других примеров здесь .